Comment faire pour désactiver la' effet de flou de imshow() dans matplotlib?
Je veux faire une couleur parcelle de probabilités cependant imshow génère floue valeurs pour les points qui ont une probabilité nulle. Comment puis-je me débarrasser de cette floue périphérie autour de véritables points de la grille?
Exemple:
import numpy as np
import matplotlib.pyplot as plt
a=np.asarray([[ 0.00000000e+00 , 1.05824446e-01 , 2.05086136e-04, 0.00000000e+00],
[ 1.05824446e-01 , 3.15012305e-01 , 1.31255127e-01 , 1.05209188e-01],
[ 2.05086136e-04 , 1.31255127e-01 , 0.00000000e+00 , 0.00000000e+00],
[ 0.00000000e+00 ,1.05209188e-01 , 0.00000000e+00 , 0.00000000e+00]])
im=plt.imshow(a,extent=[0,4,0,4],origin='lower',alpha=1,aspect='auto')
plt.show()
Vous devez vous connecter pour publier un commentaire.
Par défaut (qui est changé mpl 2.0),
imshow
interpole les données (comme vous voulez le faire pour une image). Tout ce que vous devez faire est de dire à ne pas interpoler:'nearest'
sera également travailler pour ce que vous voulez. Voir lissage entre les pixels de imagesc\imshow dans matlab comme le matplotlib imshow pour des exemples de tous les types d'interpolation.doc
im = plt.imshow(..., interpolation='none')
none
, tandis quenearest
semble être accepté partout.macosx
backend ne le supporte pas. Il lance l'avertissement suivant:WARNING: The backend (matplotlib.backends.backend_macosx.RendererMac) does not support interpolation='none'. The image will be interpolated with 'nearest' mode. [matplotlib.image]
None
-> utiliser l'interpolation par défautplt.matshow()
Vous pouvez également utiliser:
Cela fonctionne particulièrement bien pour les variables discrètes.