15

I would like to produce a subplot from data 4-column DataFrame into 2-rows and 2-columns.

df = pd.DataFrame(np.random.randn(6,4),index=pd.date_range('1/1/2000',periods=6, freq='1h'))

However, below will give a 4-row and 1-column plot

df.plot(use_index=False, title=f, subplots=True, sharey=True, figsize=(8, 6))
2
  • 4
    You should do it by hand, import matplotlib.pyplot as plt, then something like for i in df: plt.subplot(2,2,i+1);plt.plot(df[i]); Commented Feb 15, 2013 at 6:27
  • 1
    @tesla1060 i suppose pandas could allow some sort of figshape argument... Commented Jun 7, 2013 at 21:54

2 Answers 2

15

In current versions of Pandas, DataFrame.plot features the layout keyword for this purpose.

df.plot(subplots=True, layout=(2,2), ...)
Sign up to request clarification or add additional context in comments.

1 Comment

This is the quickest implementation of OP's request
10

cplcloud's answer works, but following code will give you a bit more structure so that you can start configuring more if you do not need the loop.

fig, axes = plt.subplots(nrows=2, ncols=2)
fig.set_figheight(6)
fig.set_figwidth(8)
df[0].plot(ax=axes[0,0], style='r', label='Series'); axes[0,0].set_title(0)
df[1].plot(ax=axes[0,1]); axes[0,1].set_title(1)
df[2].plot(ax=axes[1,0]); axes[1,0].set_title(2)
df[3].plot(ax=axes[1,1]); axes[1,1].set_title(3)
fig.tight_layout()

Added some example on axis 0 to show how you can further configure it.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.