Jeg bruker følgende kode til å tegne et søylediagram:
import matplotlib.pyplot as pls
my_df.plot(x='my_timestampe', y='col_A', kind='bar')
plt.show()
Plottet fungerer fint. Jeg ønsker imidlertid å forbedre diagrammet ved å ha 3 kolonner: 'col_A', 'col_B' og 'col_C' alle i diagrammet. Som i eksempelfiguren nedenfor:
Jeg vil gjerne at col_A
vises i blått over x-aksen, col_B
i rødt under x-aksen og col_C
i grønt over x-aksen. Er dette mulig i matplotlib? Hvordan gjør jeg endringer for å plotte alle de tre kolonnene? Takk for hjelpen!
Du kan plotte flere kolonner samtidig ved å oppgi en liste med kolonnenavn i plot
's y
-argument.
df.plot(x="X", y=["A", "B", "C"], kind="bar")
Dette gir en graf der søylene ligger ved siden av hverandre.
For å få dem til å overlappe, må du kalle plot
flere ganger, og oppgi aksene som skal plottes som argument ax
til plottet.
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()
Selv om det aksepterte svaret fungerer fint, har det siden v0.21.0rc1 gitt en advarsel
UserWarning: Pandas tillater ikke at kolonner opprettes via et nytt attributtnavn.
I stedet kan man gjøre
df[["X", "A", "B", "C"]].plot(x="X", kind="bar")