matplotlib: plot meerdere kolommen panda’s dataframe op het staafdiagram

Ik gebruik de volgende code om een ​​staafdiagram te plotten:

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

Het plot werkt prima. Ik wil de grafiek echter verbeteren door 3 kolommen te hebben: ‘col_A’, ‘col_B’ en ‘col_C’ allemaal op de plot. Zoals in het onderstaande voorbeeld:

voer hier de afbeeldingsbeschrijving in

Ik wil graag dat de col_Ain blauw boven de x-as wordt weergegeven, col_Bin rood onder de x-as en col_Cin groen hierboven x-as. Is dit iets mogelijk in matplotlib? Hoe breng ik wijzigingen aan om alle drie de kolommen te plotten? Bedankt!


Antwoord 1, autoriteit 100%

Je kunt meerdere kolommen tegelijk plotten door een lijst met kolomnamen op te geven in het plot-argument y.

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

voer hier de afbeeldingsbeschrijving in

Dit levert een grafiek op waarin staven naast elkaar staan.

Om ze te laten overlappen, moet je plotmeerdere keren aanroepen en de assen opgeven om naar te plotten als een argument axvoor de plot.

p>

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()

voer hier de afbeeldingsbeschrijving in


Antwoord 2, autoriteit 11%

Hoewel het geaccepteerde antwoord prima werkt, sinds v0.21.0rc1het geeft een waarschuwing

Gebruikerswaarschuwing: Pandas staat niet toe dat kolommen worden gemaakt via een nieuwe kenmerknaam

In plaats daarvan kan men doen

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

Other episodes