Matplotlib imshow/matshow afficher les valeurs sur la parcelle
Je suis en train de créer une grille de 10x10 en utilisant soit imshow
ou matshow
dans Matplotlib. La fonction suivante prend un tableau numpy comme entrée, et les parcelles de la grille. Cependant, j'aimerais avoir des valeurs dans le tableau affiche également à l'intérieur des cellules définies par la grille. Jusqu'à présent, je ne pouvais pas trouver une bonne façon de le faire. Je peux utiliser plt.text
pour placer les choses sur la grille, mais cela nécessite des coordonnées de chaque cellule, totalement inopportun. Est-il une meilleure façon de faire ce que je suis en train d'accomplir?
Merci!
REMARQUE: Le code ci-dessous ne prend pas les valeurs de la matrice pourtant, j'étais juste à jouer avec plt.text
.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors
board = np.zeros((10, 10))
def visBoard(board):
cmap = colors.ListedColormap(['white', 'red'])
bounds=[0,0.5,1]
norm = colors.BoundaryNorm(bounds, cmap.N)
plt.figure(figsize=(4,4))
plt.matshow(board, cmap=cmap, norm=norm, interpolation='none', vmin=0, vmax=1)
plt.xticks(np.arange(0.5,10.5), [])
plt.yticks(np.arange(0.5,10.5), [])
plt.text(-0.1, 0.2, 'x')
plt.text(0.9, 0.2, 'o')
plt.text(1.9, 0.2, 'x')
plt.grid()
visBoard(board)
De sortie:
Je me demandais si il existe un moyen de le faire sans en préciser les coordonnées. Jusqu'à présent, je l'ai fait manuellement (peut-être pas la meilleure idée, en Supposant que la figure de taille peut changer, je vais arriver avec une fonction qui calcule les coordonnées correctes.
OriginalL'auteur marillion | 2014-02-11
Vous devez vous connecter pour publier un commentaire.
Pouvez-vous faire quelque chose comme:
Edit:
Ici est une mise à jour de exemple avec un
imshow
arrière-plan.Découvrez le modifier.
Merci pour le code! Veuillez noter que l'image résultante peut être affiché à l'envers. Vous pouvez éviter cela en inversant les deux arguments de set_ylim: ax.set_ylim(bas=max_val - diff / 2, top=min_val - diff / 2)
selon les arguments que vous fournissez à
imshow
, l'intrigue peut apparaître différemment que vous attendez (car par défaut, pour représenter les images qui sont différents que les normes utilisées pour afficher les données des parcelles). Ici, je suis en utilisant les valeurs par défaut. Mais si vous trouvez que l'intrigue est un peu rotation/tête en bas, découvrez laorigin
argument mot-clé. Vous devrez peut-être configurer pourorigin='lower'
.OriginalL'auteur wflynny
Pour votre graphique vous devriez vous devriez essayer avec
pyplot.table
:Oui, je suis capable de faire quelque chose comme
plt.plot(range(10),range(10))
et je vois le graphique ci-dessous la table, la table est juste comme une autre parcelle.OriginalL'auteur Alvaro Fuentes
Quelques explications sur le code de @wflynny d'en faire une fonction qui prend une matrice peu importe ce que la taille des parcelles et de ses valeurs.
OriginalL'auteur Reed Richards