154

How can I modify the size of the output image of the function pandas.DataFrame.plot?

I tried:

plt.figure(figsize=(10, 5))

and

%matplotlib notebook

but none of them work.

2
  • 2
    Already answered in this answer of the duplicate on Sep 29 '16 Commented Sep 22, 2021 at 4:26
  • 4
    (This question is currently the subject of a meta question.) Commented Oct 29, 2021 at 9:49

3 Answers 3

281

Try the figsize parameter in df.plot(figsize=(width,height)):

df = pd.DataFrame({"a":[1,2],"b":[1,2]})
df.plot(figsize=(3,3));

Enter image description here

df = pd.DataFrame({"a":[1,2],"b":[1,2]})
df.plot(figsize=(5,3));

Enter image description here

The size in figsize=(5,3) is given in inches per (width, height).

An alternative way is to set desired figsize at the top of the Jupyter Notebook, prior to plotting:

plt.rcParams["figure.figsize"] = (10, 5)

This change will affect all the plots, following this statement.


As per explanation why it doesn't work for the OP:

plt.figure(figsize=(10,5)) doesn't work because df.plot() creates its own matplotlib.axes.Axes object, the size of which cannot be changed after the object has been created. For details please see the source code. Though, one can change default figsize prior to creation, by changing default figsize with plt.rcParams["figure.figsize"] = (width, height)

Sign up to request clarification or add additional context in comments.

Comments

28

If you want to make a change to the whole notebook global:

import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams["figure.figsize"] = [10, 5]

Comments

4

Try this:

import matplotlib as plt

After importing the file we can use the Matplotlib library, but remember to use it as plt:

df.plt(kind='line', figsize=(10, 5))

After that, the plot will be done and the size increased. In figsize, the 10 is for breadth and 5 is for height. Also other attributes can be added to the plot too.

2 Comments

This is a terrible answer, which results in AttributeError: 'DataFrame' object has no attribute 'plt'. pandas imports matplotlib as a dependency, and the correct way to use pandas.DataFrame.plot to adjust figsize is shown in the accepted answer. kind='line' is not required, because it is the default. As the answer is blatantly incorrect, the fact it has any upvotes undermines the credibility of voting system. The correct import is import matplotlib.pyplot as plt as shown in the matplotlib Usage Guide.
import matplotlib as mpl where mpl is the correct alias, not plt. matplotlib Usage Guide

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.