当我使用matplotlib的imshow()方法来表示一个小的numpy矩阵时,它会在像素之间进行一些平滑处理。有没有办法禁用这个功能?这会使我的图表在演示中误导观众。
![使用imshow()绘制的28x28矩阵](https://istack.dev59.com/fg5ay.webp)
上面的图是一个28x28的图像,因此我应该看到每个像素的单一颜色大方块(就像在matlab中使用imagesc()时显示的那样)。但是,相反,像素似乎与相邻像素模糊在一起。有没有办法禁用这种行为?
当我使用matplotlib的imshow()方法来表示一个小的numpy矩阵时,它会在像素之间进行一些平滑处理。有没有办法禁用这个功能?这会使我的图表在演示中误导观众。
上面的图是一个28x28的图像,因此我应该看到每个像素的单一颜色大方块(就像在matlab中使用imagesc()时显示的那样)。但是,相反,像素似乎与相邻像素模糊在一起。有没有办法禁用这种行为?
对于imshow
,有一个插值(interpolation)选项来控制是否以及如何应用插值算法来渲染矩阵。如果你尝试
imshow(array, interpolation="nearest")
你可能会得到更符合你要求的东西。举个例子
A=10*np.eye(10) + np.random.rand(100).reshape(10,10)
imshow(A)
相比之下
A=10*np.eye(10) + np.random.rand(100).reshape(10,10)
imshow(A, interpolation="nearest")
你也可以尝试使用这个函数
matshow
这个名称表明它确切地做了你要求的事情 - 表示矩阵。当你不需要太多自定义图形时,它非常方便。
顺便说一句,matplotlib 最好的资源之一是他们的Gallery
interpolation="none"
选项,它基本上做了同样的事情。这个例子提供了更多关于interpolation="nearest"
试图实现什么的信息。 - talonmies