Heatmap avec matplotlib à l'aide de matshow
Je suis en train de générer une heatmap de 10x10 de la matrice. Toutes les valeurs de la matrice sont les probabilités; somme de tous les éléments égal à 1.0. J'ai décidé d'utiliser le matshow type de courbe (il semblait facile à utiliser), mais je ne peut pas générer la sortie j'aimerais avoir jusqu'à présent.
1.Visuellement, il ressemble un peu laid. Recommanderiez-vous à un raccord en couleur de la carte pour une utilisation dans un heatmap?
2.Est-il possible d'attribuer prédéfinis bacs à la couleur de la carte lors de l'utilisation de matshow? E. g. prendre un dégradé de 1000 couleurs, utiliser toujours les mêmes couleurs pour les les probabilités correspondantes. Comportement par défaut, je pense que matshow vérifie les valeurs minimale et maximale, a confié le premier et le dernier des couleurs dans le dégradé de ces valeurs, puis colorie les valeurs entre par interpolation.
Parfois j'ai très similaire probabilités dans la matrice, et d'autres fois la portée des probabilités peut être très grand. En raison du comportement par défaut, j'ai essayé de l'expliquer ci-dessus, j'ai même des parcelles, ce qui rend les comparaisons plus difficiles.
Mon code pour générer le dit chaleur cartes (et un exemple de la parcelle) est ci-dessous.
Merci!
import bumpy as np
def pickcoord():
i = np.random.randint(0,10)
j = np.random.randint(0,10)
return [i,j]
board = np.zeros((10,10))
for i in range(1000000):
try:
direction = np.random.randint(0,2)
new_board = np.zeros((10,10))
coords = pickcoord()
if direction == 1:
for k in range(2):
new_board[coords[0]][coords[1]+k] = 1
else:
for k in range(2):
new_board[coords[0]+k][coords[1]] = 1
except IndexError:
new_board = np.zeros((10,10))
board = board + new_board
board_prob = board/np.sum(board)
figure(figsize(6,6))
matshow(board_prob, cmap=cm.Spectral_r, interpolation='none')
plt.xticks(np.arange(0.5,10.5), [])
plt.yticks(np.arange(0.5,10.5), [])
plt.grid()
OriginalL'auteur marillion | 2014-02-03
Vous devez vous connecter pour publier un commentaire.
Votre deuxième problème peut être résolu à l'aide de la
vmin
etvmax
arguments de lamatshow
fonction:Compte tenu de votre premier problème, cela dépend de ce que vous voulez mettre l'accent ou l'affichage. Choisir un raccord palette de couleurs à partir de la par défaut colormaps de matplotlib.
vmin
etvmax
a fait le tour!OriginalL'auteur David Zwicker