Resize a figure automatically in matplotlib

Viewed 133682

Is there a way to automatically resize a figure to properly fit contained plots in a matplotlib/pylab image?

I'm creating heatmap (sub)plots that differ in aspect ratio according to the data used.

I realise I could calculate the aspect ratio and manually set it, but surely there's an easier way?

6 Answers

you can try using axis('scaled')

import matplotlib.pyplot as plt
import numpy

#some dummy images
img1 = numpy.array([[.1,.2],[.3,.4]]) 
img2 = numpy.array([[.1,.2],[.3,.4]])

fig,ax = plt.subplots()
ax.imshow(img1,extent=[0,1,0,1])
ax.imshow(img2,extent=[2,3,0,1])
ax.axis('scaled') #this line fits your images to screen 
plt.show()

Do you mean changing the size of the image or the area that is visable within a plot?

The size of a figure can be set with Figure.set_figsize_inches. Also the SciPy Cookbook has an entry on changing image size which contains a section about multiple images per figure.

Also take a look at this question.

Also possible to use ax.autoscale with ax object

ax.autoscale(enable=True) 
Related