在matplotlib中防止imshow的抗锯齿

时间:2011-12-04 16:12:33

标签: python numpy matplotlib scipy blurry

当我使用matplotlib的imshow()方法来表示一个小的numpy矩阵时,它最终会在像素之间进行一些平滑处理。有没有办法禁用它?它使我的数字在演示文稿中误导。A 28x28 matrix plotted with imshow()

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

2 个答案:

答案 0 :(得分:48)

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

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")

enter image description here

答案 1 :(得分:19)

你也可以试试这个功能

matshow 

哪个名称表明它完全符合您的要求 - 代表矩阵。 当你不需要过多地定制数字时,它非常方便。

BTW,matplotlib的最佳资源之一是他们的Gallery