Comment redéfinir une couleur pour une valeur spécifique dans un matplotlib palette de couleurs
Je veux utiliser la palette de couleurs rainbow
dans une image à l'aide de imshow
. Il fonctionne parfaitement, mais je veux redéfinir la couleur de la valeur 0
. Au lieu de violete, je veux utiliser le blanc.
Je veux le faire uniquement pour la valeur zéro, toutes les autres valeurs peuvent rester avec les valeurs par défaut dans la palette de couleurs.
Une idée de comment faire cette sans avoir à modifier la palette des couleurs manuellement?
- Voir: stackoverflow.com/questions/16152052/...
- La question est différente,la viande hachée, je ne veux pas modifier le camp de l'... La définition de l'arc-en-ciel de couleur de la carte n'est pas très explicite
- Vous n'avez pas à modifier la rampe à tous, je voulais créer un masqués tableau avec des zéros masqués et utiliser le
cmap.set_bad('white')
. Mais la solution de contournement est une sorte d'équivalent que l'utilisation de lacmap.set_under()
à partir de ci-dessous. - Vous devez vous ne pas utiliser l'arc-en-ciel de couleur de la carte.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également utiliser
set_under
qui, je pense, fait plus de sens sémantique que d'utiliserset_bad
Vous pouvez modifier la barre de couleur de montrer aussi la "vertu" (et le symétrique 'plus') couleur à l'aide de la kwarg
extend
, voir exemple et docs.Pour une réponse à une double emploi avec plus d'exemples complets voir Comment créer matplotlib palette de couleurs qui traite d'une valeur spécialement?
set_under
,set_over
, ouset_bad
lacmap
est modifié. Même si retriven nouveau à l'aide dematplotlib.cm.get_cmap
, l'original de la cmap reste modifiés. Comment revenir à son état initial? Alternative, ou comment en créer un nouveau à modifier sans modifier l'original de la cmap?cmap = copy.deepcopy(cm.get_cmap(...))
. Il va fonctionner sans un propriétédeepcopy en 2.1.mpl
les versions inférieures 2.1 il n'y a aucun moyen de retour de lacmap
à l'état initial aprèsset_under
,set_over
, ouset_bad
à moins de réinitialiser manuellement la couleur d'origine? BTWdeepcopy
de lacopy
module a fait le tour.cmap
,par exempleviridis
à son état d'origine une fois les extrêmes a été modifié le: mpl.cm.viridis._rgba_under = Aucun; mpl.cm.viridis._set_extremes()