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

Cup*_*tor 42 python plot numpy matplotlib

我想制作概率的颜色图,但是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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

tac*_*ell 64

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

im = plt.imshow(..., interpolation='none')
Run Code Online (Sandbox Code Playgroud)

'nearest'也会为你想要的东西工作.有关所有类型插值的示例,请参阅matlab中图像像素之间的平滑,如matplotlib imshow.

DOC

  • 请注意,有些后端不支持`none`,而`nearest`似乎在任何地方都可以接受. (3认同)
  • @tcaswell:`macosx`后端不支持它.它会抛出以下警告:`警告:后端(matplotlib.backends.backend_macosx.RendererMac)不支持interpolation ='none'.图像将以"最近"模式进行插值.[matplotlib.image]` (3认同)