Prevent anti-aliasing for imshow in matplotlib

让人想犯罪 __ 提交于 2019-11-29 04:34:51

问题


When I use matplotlib's imshow() method to represent a small numpy matrix, it ends up doing some smoothing between pixels. Is there any way to disables this? It makes my figure's misleading in presentations.

The figure above is a 28x28 image, so I should be seeing large squares of single colors representing each pixel (as matlab would display it when using imagesc()). But Instead, the pixels seem to be blurred with neighboring pixels. Is there a way to disable this behavior?


回答1:


There is an interpolation option for imshow which controls how and if interpolation will be applied to the rendering of the matrix. If you try

imshow(array, interpolation="nearest") 

you might get something more like you want. As an example

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

compared with

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




回答2:


you can also try the function

matshow 

which name indicated that it does exactly what you asked - represent matrices. It is quite handy when you do not need to customise the figure too much.

BTW, one of the best resources for matplotlib is their Gallery



来源:https://stackoverflow.com/questions/8376609/prevent-anti-aliasing-for-imshow-in-matplotlib

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!