Setting Yaxis in Matplotlib using Pandas

Question:

Using Pandas to plot in I-Python Notebook, I have several plots and because Matplotlib decides the Y axis it is setting them differently and we need to compare that data using the same range.
I have tried several variants on: (I assume I’ll need to apply the limits to each plot.. but since I can’t get one working… From the Matplotlib doc it seems that I need to set ylim, but can’t figure the syntax to do so.

df2250.plot(); plt.ylim((100000,500000)) <<<< if I insert the ; I get int not callable and  if I leave it out I get invalid syntax. anyhow, neither is right...
df2260.plot()
df5.plot()
Asked By: dartdog

||

Answers:

Pandas plot() returns the axes, you can use it to set the ylim on it.

ax1 = df2250.plot()
ax2 = df2260.plot()
ax3 = df5.plot()

ax1.set_ylim(100000,500000)
ax2.set_ylim(100000,500000)
etc...

You can also pass an axes to Pandas plot, so plotting it in the same axes can be done like:

ax1 = df2250.plot()
df2260.plot(ax=ax1)
etc...

If you want a lot of different plots, defining the axes beforehand and within one figure might be the solution that gives you the most control:

fig, axs = plt.subplots(1,3,figsize=(10,4), subplot_kw={'ylim': (100000,500000)})

df2260.plot(ax=axs[0])
df2260.plot(ax=axs[1])
etc...
Answered By: Rutger Kassies

I’m guessing this was a feature added after this answer was accepted in 2013; DataFrame.plot() now exposes a ylim parameter that sets the y axis limits:

df.plot(ylim=(0,200))

See pandas documentation for details.

Answered By: skeller88
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.