Как вы сами узнали, используя pyplot
, вам нужно сохранить цифру до того, как она станет show
n.
Это действительно только для неинтерактивного режима (ioff
), но это вариант по умолчанию и, вероятно, наиболее распространенный вариант использования.
Что происходит, когда вызывается pyplot.show()
, показывается фигура и запускается цикл обработки событий, который принимает цикл четности Python. Следовательно, любая команда после pyplot.show()
задерживается до закрытия фигуры. Это означает, что pyplot.savefig()
, который следует после show
, не выполняется, пока фигура не будет закрыта. Как только фигура закрыта, внутри конечного автомата pyplot больше нет фигуры для сохранения.
Вы можете, однако, сохранить конкретную фигуру, на случай, если это необходимо. Э.Г.
import matplotlib.pyplot as plt
plt.plot([1,2,3])
fig = plt.gcf()
plt.show()
fig.savefig("foo5.png")
Здесь мы вызываем метод savefig
конкретной фигуры (в данном случае единственный присутствующий), для которого нам нужно получить дескриптор (fig
) этой фигуры.
Обратите внимание, что в таких случаях, когда вам нужен точный контроль над тем, как работает matplotlib, всегда полезно не использовать pyplot, а полагаться в основном на объектно-ориентированный интерфейс.
Следовательно,
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1,2,3])
plt.show()
fig.savefig("foo5.png")
будет более естественным способом сохранить фигуру после ее показа.