Resize a figure automatically in matplotlib

后端 未结 6 853
滥情空心
滥情空心 2021-01-31 02:05

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 rat

相关标签:
6条回答
  • 2021-01-31 02:42

    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()
    
    0 讨论(0)
  • 2021-01-31 02:44

    Another way of doing this is using the matplotlib tight_layout function

    import matplotlib.pyplot as plt
    fig,(ax) = plt.subplots(figsize=(8,4), ncols=1)
    data = [0,1,2,3,4]
    ax.plot(data)
    fig.tight_layout()
    fig.show()
    
    0 讨论(0)
  • 2021-01-31 02:51

    Use bbox_inches='tight'

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.cm as cm
    
    X = 10*np.random.rand(5,3)
    
    fig = plt.figure(figsize=(15,5),facecolor='w') 
    ax = fig.add_subplot(111)
    ax.imshow(X, cmap=cm.jet)
    
    plt.savefig("image.png",bbox_inches='tight',dpi=100)
    

    ...only works when saving images though, not showing them.

    0 讨论(0)
  • 2021-01-31 02:55

    just use aspect='auto' when you call imshow

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.cm as cm
    
    X = 10*np.random.rand(5,3)
    plt.imshow(X, aspect='auto')
    

    it works even if it is just for showing and not saving

    0 讨论(0)
  • 2021-01-31 03:04

    Also possible to use ax.autoscale with ax object

    ax.autoscale(enable=True) 
    
    0 讨论(0)
  • 2021-01-31 03:06

    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.

    0 讨论(0)
提交回复
热议问题