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 the show()
command.
However, show()
displays all created figures. I can avoid this by calling close()
after creating the plots which I don't want to show on-screen, like in the following code:
import matplotlib.pyplot as plt
y1 = [4, 2, 7, 3]
y2 = [-7, 0, -1, -3]
plt.figure()
plt.plot(y1)
plt.savefig('figure1.png')
plt.close()
plt.figure()
plt.plot(y2)
plt.show()
plt.close('all')
This saves the first figure and shows the second one. However, I get an error message:
can't invoke "event" command: application has been destroyed while executing
Is it possible to select in a more elegant way which figures to show?
Also, is the first figure()
command superfluous? It doesn't seem to make a different whether I give it or not.
Many thanks in advance.
Saving a plot on your disk as an image file Now if you want to save matplotlib figures as image files programmatically, then all you need is matplotlib. pyplot. savefig() function. Simply pass the desired filename (and even location) and the figure will be stored on your disk.
MatPlotLib with Python Create a new figure (fig2) or activate an existing figure using figure() method. Plot the Second line using plot() method. Initialize a variable, filename, to make a pdf file. Create a user-defind function, save_multi_image, and call it to save all the open matplotlib figures in one file at once.
Simply call plt. close() at the end of each plot instead of plt. show() and they won't be displayed.
The better way is to use plt.clf()
instead of plt.close()
.
Moreover plt.figure()
creates a new graph while you can just clear previous one with plt.clf()
:
import matplotlib.pyplot as plt
y1 = [4, 2, 7, 3]
y2 = [-7, 0, -1, -3]
plt.figure()
plt.plot(y1)
plt.savefig('figure1.png')
plt.clf()
plt.plot(y2)
plt.show()
plt.clf()
This code will not generate errors or warnings such can't invoke "event" command...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With