user1934212 user1934212 - 2 months ago 24
Python Question

Cannot combine bar and line plot using pandas plot() function

I am plotting one column of a pandas dataframe as line plot, using plot() :

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


and get the desired result:

enter image description here

Now I want to plot another column of the same dataframe as bar chart using

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


with the result:

enter image description here

And finally I want to combine both by

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


which doesn't produce any plot.

Why are the x-ticks of the bar plot so different to the x-ticks of the line plot? How can I combine both plots in one plot?

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

some data

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

then we create an axes object (ax). Notice that we pass ax to both plots

_, ax = plt.subplots()

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

enter image description here

Comments