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:
Ik wil graag dat de col_A
in blauw boven de x-as wordt weergegeven, col_B
in rood onder de x-as en col_C
in 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")
Dit levert een grafiek op waarin staven naast elkaar staan.
Om ze te laten overlappen, moet je plot
meerdere keren aanroepen en de assen opgeven om naar te plotten als een argument ax
voor 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()
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")