2011-10-14 9 views
28

matplotlibのアンチエイリアスを増やすことはできますか? 私のデータには何らかのエイリアシングが残っていますが、いくつかのバックエンドを試しましたが、まだそこにあります。行のアンチエイリアシングフラグが設定されます。matplotlibのアンチエイリアスの強さの変更

ここでは、私はそれがスクリーンショットから採取したサンプルです

enter image description here

何を意味するかを見ることができます。それはおそらく最良の例ではありませんが、私はラインの階段を見ることができると思います。これは、wxaggバックエンドで行われました。

私は、Windows 7でmatplotlibのバージョン1.01を使用してい

アップデート: 私はもう前の画像を生成するコードを持っていないが、私はまだ問題を抱えています。以下は、エイリアシングを示す簡単なコード例です。

import numpy as np 
import matplotlib 
matplotlib.use('wxAgg') 
import matplotlib.pyplot as pl 
print 'Backend:', pl.get_backend() 

x = np.linspace(0,6,100) 
y = np.sin(x) 

for a in range(10): 
    pl.plot(x, a/10.*x, linewidth=1) 

pl.show() 

それは印刷のBackend: WXAgg と結果のプロットは、次のようになります。 aliasing

特に、赤の下の曲線は、明確なエイリアシングを示します。

+6

は、高品質のアルゴリズムを使用して、より高いピクセル寸法とダウンスケールでプロットをレンダリングします。 –

+0

ですが、インタラクティブセッションはどうですか? – P3trus

+0

あなたは 'imshow'の画像プロットを参照していますか?もしそうなら、それはアンチエイリアスとは何の関係もありません。それは 'imshow'が使う補間アルゴリズムです。 (元のデータではなく、3バンドカラー配列を補間するため、多くのアーティファクトが発生する可能性があります。) –

答えて

4

質問に追加した写真は、すでに完全にアンチエイリアス処理されています。これ以上は得られません。あなたは.SVGファイルとして画像を保存した場合、あなたは無限の精度を持つことになります

Upscaled version of the image in question

+1

これは正しくアンチエイリアス処理されているということは間違いありませんが、私はこれまで "完璧"とは言えません。良いアンチエイリアスアルゴリズムには多くの要因があります。 –

+0

1.影の数は制限されていないようです(たとえば、Windowsのフォントレンダリングが好きです)。 2.目に見えるアーティファクトはありません。 3.サブピクセルレンダリングは赤いもののオプションではありません。 4.各行のピクセルスパンの幅は線幅で定義されているため、アルゴリズムによって変更することはできません。 これはどのように改善できるのか本当にわかりません。方法がありますか? – Simon

+0

私はサブピクセルレンダリングに言及していませんでした。適用されるスーパーサンプリングの量によって決まる1つの要素、シェードの数を上げました。私は他のものを考えることができます:フィルターの形状とサイズ、色空間の直線性。 –

4

:画像のズームバージョンを見てみましょう。この.svgをInkScapeのようなもので編集し、あなたが好きなだけ精度/アンチエイリアスをどれだけ得ることができます。

+0

ええ、 'svg - > inkscape - > pngにエクスポートしてdpiで5倍に - > GIMP - > [わずかにぼかし? - >]を20%に拡大 - > pngに再度エクスポートする 'を選択します。私のために隣接するポリゴン間の白い線を完全に削除しました。 – naught101

関連する問題