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()

Heatmap avec matplotlib à l'aide de matshow

OriginalL'auteur marillion | 2014-02-03