Nu se poate combina graficul de bare și de linii utilizând funcția pandas plot() (Programare, Python, Pandas, Matplotlib, Plot)

utilizator1934212 a intrebat.

Reprezint o coloană dintr-un cadru de date pandas sub forma unui grafic de linii, utilizând funcția plot() :

df.iloc[:,1].plot()

și obțin rezultatul dorit:

Acum vreau să reprezint o altă coloană din același cadru de date ca grafic de bare, utilizând

ax=df.iloc[:,3].plot(kind='bar',width=1)

cu rezultatul:

Și, în final, vreau să le combin pe ambele prin

spy_price_data.iloc[:,1].plot(ax=ax)

ceea ce nu produce niciun grafic.

De ce sunt atât de diferiți x-ticks din graficul de bare față de x-ticks din graficul de linii? Cum pot să combin ambele diagrame într-un singur grafic?

Comentarii

  • Nu sunt sigur de ce x-ticks sunt diferite, deoarece nu ar trebui să fie. În ceea ce privește obținerea unui grafic cu linii și a unui grafic cu bare pe același grafic, puteți utiliza subplot-uri. Voi trimite un răspuns –  > Por Bob Haffner.
  • Vedeți acest lucru pentru prima dvs. întrebare, s-ar putea să vă ajute. –  > Por roganjosh.
  • Problema de a obține xticks dreapta a fost rezolvată aici –  > Por Iulia .
1 răspunsuri
Bob Haffner
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

unele date

df = pd.DataFrame(np.random.randn(5,2))
print (df)
          0         1
0  0.008177 -0.121644
1  0.643535 -0.070786
2 -0.104024  0.872997
3 -0.033835  0.067264
4 -0.576762  0.571293

apoi creăm un obiect axe (ax). Observați că trecem ax la ambele diagrame

_, ax = plt.subplots()

df[0].plot(ax=ax)
df[1].plot(kind='bar', ax=ax)

Comentarii

  • Ați putea să încercați să faceți trucul cu acest DF: df=pd.DataFrame({'v1':np.sin(np.arange(50)), 'v2':np.cos(np.arange(50)**2)}, index=pd.date_range('2016-01-01', periods=50, freq='30T')) ? –  > Por MaxU.
  • Am încercat acest lucru: df = pd.DataFrame(np.random.randn(5,2)) ax = plt.subplots() df[0].plot(ax=ax) df[1].plot(kind='bar', ax=ax) și am obținut : AttributeError: 'tuple' object has no attribute 'get_figure' –  > Por user1934212.
  • @MaxU Ai încercat ceea ce am mai sus? A trasat doar o singură serie? –  > Por Bob Haffner.
  • @BobHaffner, da, al doilea complot îl suprascrie complet pe primul –  > Por MaxU.
  • @MaxU La fel și aici. Încearcă asta _, ax = plt.subplots(figsize=(75,50)) plt.plot(df.index, df['v1']) plt.bar(df.index, df['v2'], width=.01) –  > Por Bob Haffner.