matplotlib: tracer plusieurs colonnes de la base de données pandas sur le diagramme à barres

j'utilise le code suivant pour tracer un graphique:

import matplotlib.pyplot as pls 
my_df.plot(x='my_timestampe', y='col_A', kind='bar') 
plt.show()

L'intrigue fonctionne bien. Cependant, je veux améliorer le graphique en ayant 3 colonnes: 'col_A', 'col_B', et 'col_C' tout sur la parcelle. Comme dans la figure d'exemple ci-dessous:

enter image description here

je voudrais que le col_A affiché en bleu au-dessus de l'axe des x,col_B en rouge sous l'axe des x, et col_C en vert au-dessus de l'axe des x. Est-ce quelque chose de possible dans matplotlib? Comment puis-je faire des changements pour tracer les trois colonnes? Merci!

16
demandé sur ImportanceOfBeingErnest 2017-02-09 07:49:04

2 réponses

vous pouvez tracer plusieurs colonnes à la fois en fournissant une liste de noms de colonnes à ploty argument.

df.plot(x="X", y=["A", "B", "C"], kind="bar")

enter image description here

ceci produira un graphique où les barres sont assises l'une à côté de l'autre.

afin qu'ils se chevauchent, vous devez appeler plot plusieurs fois, et fournir les axes à tracer comme argument ax pour le parcelle.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

y = np.random.rand(10,4)
y[:,0]= np.arange(10)
df = pd.DataFrame(y, columns=["X", "A", "B", "C"])

ax = df.plot(x="X", y="A", kind="bar")
df.plot(x="X", y="B", kind="bar", ax=ax, color="C2")
df.plot(x="X", y="C", kind="bar", ax=ax, color="C3")

plt.show()

enter image description here

42
répondu ImportanceOfBeingErnest 2017-02-09 08:11:50

bien que la réponse acceptée fonctionne bien, puisque v0.21.0rc1 il donne un avertissement

UserWarning: les Pandas n'autorise pas les colonnes d'être créé par un nouveau nom de l'attribut

au Lieu de cela, on peut faire

df[["X", "A", "B", "C"]].plot(x="X", kind="bar")
2
répondu ayorgo 2018-08-09 15:21:59