Choosing which figures to show on-screen and which to save to a file using Python's matplotlib

后端 未结 2 1724
[愿得一人]
[愿得一人] 2021-02-20 06:53

I\'d like to create different figures in Python using matplotlib.pyplot. I\'d then like to save some of them to a file, while others should be shown on-screen using

2条回答
  •  执笔经年
    2021-02-20 06:59

    Generally speaking, you can just close the figure. As a quick example:

    import matplotlib.pyplot as plt
    
    fig1 = plt.figure()
    plt.plot(range(10), 'ro-')
    plt.title('This figure will be saved but not shown')
    fig1.savefig('fig1.png')
    plt.close(fig1)
    
    fig2 = plt.figure()
    plt.plot(range(10), 'bo')
    plt.title('This figure will be shown')
    
    plt.show()
    

    As far as whether or not the first plt.figure() call is superflous, it depends on what you're doing. Usually, you want to hang on to the figure object it returns and work with that instead of using matplotlib's matlab-ish state machine interface.

    When you're making more complex plots, it often becomes worth the extra line of code to do something like this:

    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)
    ax.plot(range(10))
    

    The advantage is that you don't have to worry about which figure or axis is "active", you just refer to a specific axis or figure object.

提交回复
热议问题