Vous pouvez le faire avec le code ci-dessous, et le code de votre question était en fait très proche de ce dont vous aviez besoin, tout ce que vous avez à faire est d'appeler l' cmap
objet que vous avez.
import matplotlib
cmap = matplotlib.cm.get_cmap('Spectral')
rgba = cmap(0.5)
print(rgba) # (0.99807766255210428, 0.99923106502084169, 0.74602077638401709, 1.0)
Pour les valeurs en dehors de la plage [0.0, 1.0], il renverra respectivement les couleurs sous et sur. C'est, par défaut, la couleur minimale et maximale dans la plage (donc 0,0 et 1,0). Cette valeur par défaut peut être modifiée avec cmap.set_under()
et cmap.set_over()
.
Pour les nombres "spéciaux" tels que np.nan
et np.inf
la valeur par défaut est d'utiliser la valeur 0.0, cela peut être changé en utilisant de la cmap.set_bad()
même manière que sous et au-dessus comme ci-dessus.
Enfin, il peut être nécessaire pour vous de normaliser vos données afin qu'elles soient conformes à la plage [0.0, 1.0]
. Cela peut être fait en utilisant matplotlib.colors.Normalize
simplement comme indiqué dans le petit exemple ci-dessous où les arguments vmin
et vmax
décrivent quels nombres doivent être mappés à 0,0 et 1,0 respectivement.
import matplotlib
norm = matplotlib.colors.Normalize(vmin=10.0, vmax=20.0)
print(norm(15.0)) # 0.5
Un normaliseur logarithmique ( matplotlib.colors.LogNorm ) est également disponible pour les plages de données avec une large plage de valeurs.
(Merci à Joe Kington et à tcaswell pour leurs suggestions sur la façon d'améliorer la réponse.)
cmap.set_under('red'); print cmap(0.0), cmap(-0.01)
set_bad
qui définit ce que fait pournp.nan
etnp.inf
iirc. Vous devriez également mentionner lesNormalize
méthodes ici.module 'matplotlib' has no attribute 'cm'
, essayez de remplacer les deux premières lignes parimport matplotlib.pyplot as plt; cmap = plt.cm.get_cmap('Spectral')
Afin d'obtenir une valeur entière rgba au lieu d'une valeur flottante, nous pouvons faire
Donc, pour simplifier le code en fonction de la réponse de Ffisegydd, le code serait comme ceci:
la source
Pour construire sur les solutions de Ffisegydd et amaliammr , voici un exemple où nous créons une représentation CSV pour une palette de couleurs personnalisée:
la source
Pour être complet, voici les choix cmap que j'ai rencontrés jusqu'à présent:
la source