42 votes

Prévenir l'anti-aliasing pour imshow dans matplotlib

Lorsque j'utilise matplotlib est imshow() méthode pour représenter une petite numpy de la matrice, il finit par faire un lissage entre les pixels. Est-il possible de désactiver cette? Il a fait de ma figure est trompeuse dans les présentations.A 28x28 matrix plotted with imshow()

La figure ci-dessus est un 28x28 image, donc je devrais être en train de voir les grandes carrés de couleurs représentant de chaque pixel (comme matlab affiche lors de l'utilisation de imagesc()). Mais au Lieu de cela, les pixels semblent se brouiller avec les pixels voisins. Est-il un moyen de désactiver ce comportement?

48voto

talonmies Points 41460

Il existe une option d'interpolation pour imshow qui contrôle comment et si une interpolation sera appliquée au rendu de la matrice. Si tu essayes

 imshow(array, interpolation="nearest") 
 

vous pourriez obtenir quelque chose de plus comme vous voulez. Par exemple

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

imshow (A)

comparé à

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

entrez la description de l'image ici

19voto

eldad Points 371

vous pouvez aussi essayer la fonction

 matshow 
 

quel nom a indiqué qu'il fait exactement ce que vous avez demandé - représentent des matrices. C'est assez pratique lorsque vous n'avez pas besoin de trop personnaliser le chiffre.

BTW, l'une des meilleures ressources pour matplotlib est leur galerie

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X