Prevent anti-aliasing for imshow in matplotlib
Solution 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")
Solution 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
Christopher Dorian
Updated on June 02, 2022Comments
-
Christopher Dorian almost 2 years
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?
-
Christopher Dorian over 12 yearsThanks, that seems to work. Out of curiosity, why is it called 'nearest' for interpolation? The documentation on this page: matplotlib.sourceforge.net/api/… doesn't describe what 'nearest' does.
-
talonmies over 12 yearsTo be honest, I don't know. In the development tree there is now also an
interpolation="none"
option which does pretty much the same thing. This example provides a little more information on whatinterpolation="nearest"
is trying to achieve. -
DrSAR over 12 yearsit is maybe trying to sample from the 'nearest' neighbour? in the vicinity of the display pixel
-
wim over 12 yearsit is indeed 'nearest neighbour' interpolation
-
Ander Biguri over 8 years@ChristopherDorian , just comming here 4 years late, but the difference between nearest and none: matplotlib.org/examples/images_contours_and_fields/…