How do you change the size of figures drawn with matplotlib?

后端 未结 19 3021
忘掉有多难
忘掉有多难 2020-11-21 06:01

How do you change the size of figure drawn with matplotlib?

相关标签:
19条回答
  • 2020-11-21 06:28

    Deprecation note:
    As per the official Matplotlib guide, usage of the pylab module is no longer recommended. Please consider using the matplotlib.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.

    0 讨论(0)
  • 2020-11-21 06:34

    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))
    
    0 讨论(0)
  • 2020-11-21 06:35

    Another option, to use the rc() function in matplotlib (the unit is inch)

    import matplotlib
    matplotlib.rc('figure', figsize=[10,5])
    
    0 讨论(0)
  • 2020-11-21 06:36

    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.

    0 讨论(0)
  • 2020-11-21 06:36

    To increase size of your figure N times you need to insert this just before your pl.show():

    N = 2
    params = pl.gcf()
    plSize = params.get_size_inches()
    params.set_size_inches( (plSize[0]*N, plSize[1]*N) )
    

    It also works well with ipython notebook.

    0 讨论(0)
  • 2020-11-21 06:37

    The first link in Google for 'matplotlib figure size' is AdjustingImageSize (Google cache of the page).

    Here's a test script from the above page. It creates test[1-3].png files of different sizes of the same image:

    #!/usr/bin/env python
    """
    This is a small demo file that helps teach how to adjust figure sizes
    for matplotlib
    
    """
    
    import matplotlib
    print "using MPL version:", matplotlib.__version__
    matplotlib.use("WXAgg") # do this before pylab so you don'tget the default back end.
    
    import pylab
    import numpy as np
    
    # Generate and plot some simple data:
    x = np.arange(0, 2*np.pi, 0.1)
    y = np.sin(x)
    
    pylab.plot(x,y)
    F = pylab.gcf()
    
    # Now check everything with the defaults:
    DPI = F.get_dpi()
    print "DPI:", DPI
    DefaultSize = F.get_size_inches()
    print "Default size in Inches", DefaultSize
    print "Which should result in a %i x %i Image"%(DPI*DefaultSize[0], DPI*DefaultSize[1])
    # the default is 100dpi for savefig:
    F.savefig("test1.png")
    # this gives me a 797 x 566 pixel image, which is about 100 DPI
    
    # Now make the image twice as big, while keeping the fonts and all the
    # same size
    F.set_size_inches( (DefaultSize[0]*2, DefaultSize[1]*2) )
    Size = F.get_size_inches()
    print "Size in Inches", Size
    F.savefig("test2.png")
    # this results in a 1595x1132 image
    
    # Now make the image twice as big, making all the fonts and lines
    # bigger too.
    
    F.set_size_inches( DefaultSize )# resetthe size
    Size = F.get_size_inches()
    print "Size in Inches", Size
    F.savefig("test3.png", dpi = (200)) # change the dpi
    # this also results in a 1595x1132 image, but the fonts are larger.
    

    Output:

    using MPL version: 0.98.1
    DPI: 80
    Default size in Inches [ 8.  6.]
    Which should result in a 640 x 480 Image
    Size in Inches [ 16.  12.]
    Size in Inches [ 16.  12.]
    

    Two notes:

    1. The module comments and the actual output differ.

    2. This answer allows easily to combine all three images in one image file to see the difference in sizes.

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