web-dev-qa-db-ja.com

matplotlibでimshow()のぼやけた効果を「オフにする」方法は?

確率のカラープロットを作成したいのですが、imshowは確率がゼロのポイントに対してぼやけた値を生成します。実際のグリッドポイントの周りのこのぼやけた周辺をどのように取り除くことができますか?

例:

import numpy as np
import matplotlib.pyplot as plt

a=np.asarray([[  0.00000000e+00 , 1.05824446e-01 ,  2.05086136e-04,   0.00000000e+00],
[  1.05824446e-01 ,  3.15012305e-01  , 1.31255127e-01  , 1.05209188e-01],
 [  2.05086136e-04  , 1.31255127e-01 ,  0.00000000e+00 ,  0.00000000e+00],
 [  0.00000000e+00   ,1.05209188e-01  , 0.00000000e+00  , 0.00000000e+00]])
im=plt.imshow(a,extent=[0,4,0,4],Origin='lower',alpha=1,aspect='auto')
plt.show()

enter image description here

41
Cupitor

デフォルトでは(mpl 2.0に変更されます)、imshowはデータを補間します(イメージに対して行うように)。必要なことは、補間しないように指示することだけです。

im = plt.imshow(..., interpolation='none')

'nearest'はあなたが望むものでも動作します。すべての種類の補間の例については、 matplotlib imshowのようなmatlabのimagesc\imshowのピクセル間のスムージング を参照してください。

doc

62
tacaswell

以下も使用できます。

im = plt.imshow(..., interpolation='nearest')

これは、離散変数に対して特にうまく機能します。

3
apublius