Comment donner une pandas/matplotlib graphique à barres de couleurs personnalisées
J'ai juste commencé à l'aide de pandas/matplotlib comme un remplacement pour Excel pour générer des graphiques à barres empilées. Je suis en cours d'exécution dans un problème
(1) il y a seulement 5 couleurs dans la palette par défaut, donc si j'ai plus de 5 catégories puis les couleurs de répétition. Comment puis-je spécifier plus de couleurs? Idéalement, un dégradé avec une couleur de début et de fin de couleur, et un moyen pour générer dynamiquement n couleurs entre les deux?
(2) les couleurs ne sont pas très agréable visuellement. Comment puis-je spécifier un ensemble personnalisé de n couleurs? Ou, un gradient serait aussi travailler.
Un exemple qui illustre à la fois des points ci-dessus est ci-dessous:
4 from matplotlib import pyplot
5 from pandas import *
6 import random
7
8 x = [{i:random.randint(1,5)} for i in range(10)]
9 df = DataFrame(x)
10
11 df.plot(kind='bar', stacked=True)
Et la sortie est ceci:
- Il y a une manière assez facile d'obtenir une partielle palette de couleurs. Voir cette solution ci-dessous
Vous devez vous connecter pour publier un commentaire.
Vous pouvez spécifier le
color
option d'une liste directement à laplot
fonction.Pour définir votre propre liste personnalisée, vous pouvez faire un peu de la suite, ou il suffit de regarder la Matplotlib techniques pour la définition d'un élément de couleur par ses valeurs RVB, etc. Vous pouvez obtenir d'aussi compliqué que vous voulez avec ce.
Le dernier exemple, les rendements de la suivre simple dégradé de couleurs pour moi:
Je n'ai pas jouer avec elle assez longtemps pour comprendre comment la force de la légende et de ramasser les couleurs définies, mais je suis sûr que vous pouvez le faire.
En général, cependant, un gros morceau de conseil est simplement d'utiliser les fonctions de Matplotlib directement. L'appel de Pandas est OK, mais je trouve que vous obtenez de meilleures options de performance et de les appeler directement à partir de Matplotlib.
next
fonction à l'intérieur de la compréhension.pylab.ion()
interactif pylab.this concatenates the list to itself 5 times.
Déjà cycles par le biais de la liste que vous donnez; vous n'avez pas besoin de le faire manuellementsns.color_palette("Set2", 10)
pour les pandas/matplotlib de cycle jusqu'à, par exemple,df.plot.area(stacked=True, color=sns.color_palette('Set3', 12))
J'ai trouvé le moyen le plus facile est d'utiliser le
colormap
paramètre dans.plot()
avec l'un des programmes de dégradés de couleurs:Vous pouvez trouver une grande liste de présélection des colormaps ici.
Pour une réponse plus détaillée sur la création de votre propre carte des couleurs, je vous suggère fortement de visiter cette page
Si la réponse est trop de travail, vous pouvez rapidement faire votre propre liste de couleurs et de les transmettre à l'
color
paramètre. Tous les réglages de palettes de couleur sont dans lacm
module matplotlib. Nous allons obtenir une liste de 30 RGB (plus alpha) les valeurs de couleur de l'inversion de l'enfer palette de couleurs. Pour ce faire, la première à obtenir la palette de couleurs et de transmettre une séquence de valeurs entre 0 et 1. Ici, nous utilisonsnp.linspace
créer 30 équidistants des valeurs comprises entre 4 et 8 la qui représentent la partie de la palette de couleurs.Alors nous pouvons l'utiliser à la parcelle - en utilisant les données de l'original post:
inferno_r
: matplotlib.org/examples/color/colormaps_reference.html