How do you change the size of figures drawn with matplotlib?
How do you change the size of figures drawn with matplotlib?
Popular Answer
figure tells you the call signature:
from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')
figure(figsize=(1,1))
would create an inch-by-inch image, which would be 80-by-80 pixels unless you also give a different dpi argument.
Read more... Read less...
If you've already got the figure created you can quickly do this:
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)
To propagate the size change to an existing gui window add forward=True
fig.set_size_inches(18.5, 10.5, forward=True)
Deprecation note:
As per the official Matplotlib guide, usage of thepylab
module is no longer recommended. Please consider using thematplotlib.pyplot
module instead, as described by this other answer.
The following seems to work:
from pylab import rcParams
rcParams['figure.figsize'] = 5, 10
This makes the figure's width 5 inches, and its height 10 inches.
The Figure class then uses this as the default value for one of its arguments.
USING plt.rcParams
There is also this workaround in case you want to change the size without using the figure environment. So in case you are using plt.plot()
for example, you can set a tuple with width and height.
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)
This is very useful when you plot inline (e.g. with IPython Notebook). As @asamaier noticed is preferable to not put this statement in the same cell of the imports statements.
Conversion to cm
The figsize
tuple accepts inches so if you want to set it in centimetres you have to divide them by 2.54 have a look to this question.
Please try a simple code as following:
from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()
You need to set the figure size before you plot.
In case you're looking for a way to change the figure size in Pandas, you could do e.g.:
df['some_column'].plot(figsize=(10, 5))
where df
is a Pandas dataframe. Or, to use existing figure or axes
fig, ax = plt.subplots(figsize=(10,5))
df['some_column'].plot(ax=ax)
If you want to change the default settings, you could do the following:
import matplotlib
matplotlib.rc('figure', figsize=(10, 5))