Je veux faire un tracé de couleur des probabilités, mais imshow génère des valeurs floues pour les points qui ont une probabilité nulle. Comment puis-je me débarrasser de cette périphérie floue autour de points de grille réels?
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()
Par défaut (qui est modifié mpl 2.0), imshow
interpole les données (comme vous le feriez pour une image). Tout ce que vous avez à faire est de lui dire de ne pas interpoler:
im = plt.imshow(..., interpolation='none')
'nearest'
fonctionnera également pour ce que vous voulez. Voir lissage entre pixels d'imagesc\imshow dans matlab comme le matplotlib imshow pour des exemples de tous les types d'interpolation.
Vous pouvez également utiliser:
im = plt.imshow(..., interpolation='nearest')
Cela fonctionne particulièrement bien pour les variables discrètes.