防止matplotlib中imshow的消除锯齿

当我使用matplotlib的imshow()方法来表示一个小的numpymatrix时,它最终会在像素之间做一些平滑处理。 有什么办法来禁用这个? 这使我的形象在演讲中误导。 用imshow()绘制的28x28矩阵

上图是一个28×28的图像,所以我应该看到代表每个像素的单一颜色的大方块(如matlab在使用imagesc()时显示的那样)。 但相反,像素似乎与相邻的像素模糊。 有没有办法来禁用这种行为?

imshow有一个插值选项,它控制如何以及是否将插值应用于matrix的渲染。 如果你试试

 imshow(array, interpolation="nearest") 

你可能会得到更像你想要的东西。 举个例子

 A=10*np.eye(10) + np.random.rand(100).reshape(10,10) imshow(A) 

imshow(A)

和….相比

 A=10*np.eye(10) + np.random.rand(100).reshape(10,10) imshow(A, interpolation="nearest") 

在这里输入图像说明

你也可以试试这个function

 matshow 

这个名字表明它完全符合你的要求 – 代表matrix。 当你不需要太多的自定义graphics时,它非常方便。

顺便说一句,matplotlib最好的资源之一是他们的画廊