2016-11-29 1 views
0

Je voudrais tracer une « coupe » à travers une carte thermique, à savoir appliquer un dégradé de couleurs à mon plt.plot(x,y) sur la base des valeurs y (qui sont dans une gamme de -0.5,0.5.Matplotlib en dégradé de couleur en fonction de la valeur y

Toutes les suggestions? J'ai essayé de contourner en utilisant un diagramme de dispersion, mais la palette de couleurs semblaient appliquer à chaque ligne individuellement (et non à l'échelle mondiale).

Merci!

EDIT pour décrire en d'autres termes: je voudrais cartographier chaque valeur y dans le intervalle à une couleur appropriée dans ma palette de couleurs. (L'expression «couper la carte de chaleur» fait simplement référence à la technique couramment utilisée pour mapper les valeurs z d'une fonction z=f(x,y) pour x et y donnés en une couleur.)

Comme mentionné précédemment, il suffit d'appliquer une palette de couleurs un nuage de points semble tracer la valeur y maximale de chaque ligne (comme je trace plusieurs séries) en blanc, comme on le voit dans la pièce jointe. Au lieu de cela, je voudrais mapper le global y = 0.5 dans ma parcelle en blanc et -0.5 en noir pour chaque ligne.

Example

+1

Vous voulez dire comme ceci: http://stackoverflow.com/questions/8202605/matplotlib-scatterplot-colour-as-a-function-of-a-third-variable#8204981. Notez que vous devez utiliser 'scatter' pour cela, donc vous pouvez définir la couleur pour chaque point, sinon' plot', il faudrait interpoler (en quelque sorte) entre valeurs/couleurs pour donner une ligne continue. –

+0

Il n'est pas clair ce que vous entendez par "" couper "à travers une carte de chaleur". Pouvez-vous décrire plus en détail ce que vous voulez dire, peut-être poster vos données ou un exemple de comment cela devrait ressembler? – ImportanceOfBeingErnest

+0

Merci pour vos commentaires. J'ai édité ma question; je ne sais pas pourquoi la downvote ... – Faser

Répondre

1

out i besoin Transforme de normaliser mes colormap en utilisant

norm = colors.Normalize(vmin=-min, vmax=max) 

puis appelez plt.scatter(x, y, c=y, norm=norm, …).