如何在matplotlib中“关闭”imshow()的模糊效果?

时间:2013-11-15 21:26:22

标签: python numpy matplotlib plot

我想制作概率的颜色图,但是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

2 个答案:

答案 0 :(得分:60)

默认情况下(更改为mpl 2.0),imshow会插入数据(就像您希望为图像所做的那样)。您需要做的就是告诉它不要插值:

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

'nearest'也可以满足您的需求。有关所有类型插值的示例,请参阅smoothing between pixels of imagesc\imshow in matlab like the matplotlib imshow

doc

答案 1 :(得分:3)

您也可以使用:

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

这对离散变量尤其有用。