Question

Je suis en train de créer un tracé de contour rempli matplotlib (Win7, 1.1.0). Je veux mettre en évidence certaines valeurs, et les niveaux sont plus proches de log que linéaire.

Il existe de nombreux colormaps qui me convient, mais mon choix de CMAP est ignoré.

Dois-je besoin de créer une coutume « Normaliser »? Si oui est chaque contour de couleur en fonction de sa valeur de pointe et ensuite rempli avec la même couleur à la valeur inférieure suivante? Pourquoi est le symptôme de ce à ignorer ma carte couleur ... est-ce une exception lors de la construction qui est pris et ma demande est ignorée en silence?

Mes données d'origine avait des valeurs manquantes. Je l'ai joué avec Thise nan faire, petits et grands ... dans chaque cas, je l'ai essayé de les masquer et non masquer les valeurs « à l'extérieur ». J'ai aussi essayé toutes les permutations en utilisant les niveaux par défaut et norme.

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.normalize(0,32)
cs = plt.contourf(x,z,data,cmap=cm.gray, levels=lev, norm = norml)

J'espère que cet extrait est suffisant pour au moins commencer la conversation.

Merci, Eli

Était-ce utile?

La solution

Si je vous ai bien compris, vous avez besoin de redimensionner vos données aux couleurs à l'aide de vos niveaux de base plutôt que par défaut linéaire mise à l'échelle. Si c'est vrai, alors vous devez utiliser colors.BoundaryNorm comme la norme facteur. Prenons l'exemple suivant:

x = np.arange(0,8,0.1)
y = np.arange(0,8,0.1)
z = (x[:,None]-4) ** 2 + (y[None,:]-4) ** 2

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.BoundaryNorm(lev, 256)
cs = plt.contourf(x, y, z, cmap = cm.jet, levels = lev, norm = norml)
plt.show()

Cela donne

entrer image description ici

Comparer à comportement par défaut de Normalize:

entrer image description ici

L'espoir qui aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top