49

当我使用 matplotlib 的 imshow() 方法来表示一个小的 numpy 矩阵时,它最终会在像素之间进行一些平滑处理。有什么办法可以禁用这个吗?它使我的数字在演示中具有误导性。使用 imshow() 绘制的 28x28 矩阵

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

4

2 回答 2

54

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

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

在此处输入图像描述

于 2011-12-04T16:25:59.983 回答
20

你也可以试试这个功能

matshow 

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

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

于 2012-02-12T19:09:18.047 回答