comment extraire un sous-ensemble d'une palette de couleurs comme une nouvelle palette de couleurs dans matplotlib?
Je voudrais utiliser une palette de couleurs à partir de matplotlib par exemple CMRmap. Mais je ne veux pas utiliser le "noir" de la couleur au début et à la couleur "blanche" à la fin. Je suis intéressé pour tracer mes données à l'aide de l'entre-deux couleurs. Je pense que ppl utilise assez souvent, mais j'étais à la recherche sur internet et n'arrivent pas à trouver aucune solution simple. Je vais apprécier si quelqu'un proposer aucune solution.
- V utile pour éviter de noir lorsque les couleurs sont utilisées pour le texte de milieux - bonne question
Vous devez vous connecter pour publier un commentaire.
La staticmethod couleurs.LinearSegmentedColormap.from_list peut être utilisé pour créer de nouveaux LinearSegmentedColormaps. Ci-dessous, je l'échantillon de la palette de couleurs d'origine à 100 points entre 0,2 et 0,8:
et l'utilisation de ces couleurs pour générer une nouvelle palette de couleurs:
L'intrigue sur la gauche montre l'image à l'aide de la palette de couleurs d'origine (dans cet exemple,
jet
). L'intrigue sur la droite montre la même image à l'aide denew_cmap
.cmap
peuvent accepter des arguments: classe de matplotlib.couleurs.Palette de couleurs est une méthode__call__
, ce qui en fait un foncteur, c'est à dire l'objet peut être utilisé que si c'est une fonction.Je viens récemment de la difficulté avec cela sur mon propre. Voici quelques solutions possibles:
Essayez d'utiliser
vmin
,vmax
mot-clé arguments dans votre fonction de traçage. Par exemple, disons que vous avez eu des données entre 0 et 1, mais n'aime pas les couleurs utilisées dans les extrêmes de la palette de 0 et de 1.Cela va forcer l'ensemble de la palette des couleurs pour être utilisé avec des valeurs comprises entre 0,01 et 0,99 et les valeurs ci-dessus et ci-dessous sera le cyan et le magenta, respectivement. Cela peut ne pas résoudre votre problème exactement, mais il pourrait être utile si vous souhaitez un particulier palette de couleur et souhaite qu'elle a eu d'autres couleurs à ses deux extrémités.
Si vous voulez vraiment changer la palette de couleurs, regardez la documentation ici et pour LinearSegmentedColormap ici.
D'abord,
Ce retourne un dictionnaire de toutes les couleurs qui composent la palette de couleurs. Cependant, il est assez compliqué à comprendre exactement comment modifier ce dictionnaire. Ce dict dispose de trois touches,
red, green, blue
.cdict[key]
renvoie une liste de valeurs de la forme(x, y0, y1)
. Jetons un coup d'oeil à deux consécutifs éléments decdict['red']
:Ce que cela signifie, c'est que les données avec
z
(en supposant que nous faisons unpcolor
ouimshow
) entre 0,0 et 0,5 aura la composante rouge de la couleur rvb associées à ces données va augmenter à partir de 0.0 (pas de rouge) à 1.0 (maximum rouge). Cela signifie que, pour changer la couleur de la palette, vous avez à examiner comment chacun des trois composantes rvb sont interpolées dans la région de la palette de couleurs qui vous intéressent. Assurez-vous juste que pour chaque couleur, la première et la dernière entrée de commencer avecx=0
etx=1
respectivement; vous devez couvrir le spectre entier de [0, 1].Si vous souhaitez modifier le début et la fin couleurs, essayez
Ensuite utiliser cette cmap dans votre fonction de traçage.
Ce que je voulais faire était de changer les gris à la fin de la
spectral_r
palette de couleur blanc pur. Ceci a été réalisé à l'aide deIci est une adaptation d'une réponse précédente qui intègre le tracé de la fonction:
Avoir un compact, fonction de traçage intégré est utile si vous devez appeler la fonction plus d'une fois.