2010-06-13 16 views
6

Je voudrais tracer une matrice 2-d à partir de numpy comme une matrice colorée dans Matplotlib. J'ai le suivant tableau 9 par 9:affichant un tableau 2d coloré dans matplotlib en Python

my_array = diag(ones(9)) 

# plot the array 
pcolor(my_array) 

J'aimerais mettre les trois premiers éléments de la diagonale d'une certaine couleur, trois à être une couleur différente, et les trois derniers une couleur différente. Je voudrais spécifier la couleur par une chaîne de code hexadécimal, comme "# FF8C00". Comment puis-je faire ceci?

De même, comment puis-je définir la couleur des éléments de valeur 0 pour pcolor?

Répondre

2

Pour avoir les éléments soient différentes couleurs, leur attribuer des valeurs différentes:

my_array = diag([1,1,1,2,2,2,3,3,3]) 

Pour spécifier les couleurs, essayez:

from matplotlib.colors import ListedColormap, NoNorm 
cmap = ListedColormap(['#E0E0E0', '#FF8C00', '#8c00FF', '#00FF8C']) 
pcolor(my_array,cmap=cmap,norm=NoNorm()) 

L'argument norm=NoNorm() évite toute mise à l'échelle des valeurs de la matrice, de sorte 0 obtient la première couleur de la liste, 1 la seconde, etc.