Search code examples
pythonmatplotlibfigure

Setting figure size to be larger than screen size in matplotlib


I'm trying to create figures in matplotlib that read nicely in a journal article. I have some larger figures (with subfigures) that I'd like to take up nearly an entire page in portrait mode (specifically, 6.5"x9" for a full-page figure with 1" margins on US letter paper). I can set the figure size easily with the figsize parameter. However, the figure is compressed if I set the figure size to be larger than my screen size (I'm working on a 13" laptop); specifically, the height is an issue. The dimensions of the saved figure do not change as long as the height parameter below is larger than the height of my screen:

height = 9
fig, ax = plt.subplots(3, 2, figsize=(6.5, height))
plt.savefig('test.png') # size of this figure is independent of height
                        # if height > height of my screen

How can I make matplotlib use the requested figure size even when it exceeds my screen's dimensions? I'm using spyder.


Solution

  • This is likely an issue with your backend for plot generation.

    You can see what backend you are using by running:

    import matplotlib; matplotlib.get_backend()

    Try changing the backend to something else, for example:

    import matplotlib
    
    matplotlib.use('Agg')
    

    Note that this has to be run before importing matplotlib.pyplot.