在matplotlib中防止imshow的抗锯齿

Chr*_*ian 42 python numpy blurry matplotlib scipy

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

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

tal*_*ies 48

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

imshow(array, interpolation="nearest") 
Run Code Online (Sandbox Code Playgroud)

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

A=10*np.eye(10) + np.random.rand(100).reshape(10,10)
imshow(A)
Run Code Online (Sandbox Code Playgroud)

imshow(A)

和....相比

A=10*np.eye(10) + np.random.rand(100).reshape(10,10)
imshow(A, interpolation="nearest")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 它可能试图从"最近的"邻居那里采样?在显示像素附近 (9认同)
  • 说实话,我不知道.在开发树中,现在还有一个`interpolation ="none"`选项,它做了几乎相同的事情.[该实施例](http://matplotlib.sourceforge.net/examples/pylab_examples/image_interp.html)提供关于什么`插值="最近"`正在努力实现一个小的更多信息. (4认同)
  • @ChristopherDorian,正在添加刚刚离开3旬,但最近和没有之间的区别:http://matplotlib.org/examples/images_contours_and_fields/interpolation_none_vs_nearest.html (3认同)

eld*_*d-a 19

你也可以试试这个功能

matshow 
Run Code Online (Sandbox Code Playgroud)

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

BTW,matplotlib最好的资源之一是他们的画廊