(A) Повторите предыдущие вызовы на plt.plot
: точно так же, как упоминалось в вопросе, можно просто повторить предыдущие вызовы, которые создали графики, прежде чем добавлять новый график. Это может быть самым простым решением для простых случаев.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
plt.plot(x, np.sin(x))
plt.show()
plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x))
plt.show()
(B) Использование plt.waitforbuttonpress
: Если это применимо в вашем случае, вы можете использовать plt.waitforbuttonpress
в качестве прерывания между графиками, которые ждут щелчка мышью или нажатия клавиши, пока следующий график не будет добавлен в то же окно.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
for f in [np.sin, np.cos]:
plt.plot(x, f(x))
plt.waitforbuttonpress()
(C) Укрепите график до plt.show
: Я не знаю, насколько хорошо это работает для сложных графиков, но кажется возможным засечь график перед вызовом plt.show
, только чтобы сразу же восстановить его после. Затем дополнительный сюжет может быть добавлен до следующего вызова plt.show
.
import matplotlib.pyplot as plt
import numpy as np
import pickle
x = np.linspace(0, 2 * np.pi, 100)
ax = plt.gca()
for f in [np.sin, np.cos]:
plt.plot(x, f(x))
temp = pickle.dumps(ax)
plt.show()
ax = pickle.loads(temp)
(D) Управление менеджером фигур и канвой : по существу, загружается фигура fig
в "вновь созданный рисунок для каждой итерации l oop, а затем обновляется с новыми графиками.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
fig = plt.figure()
plt.close()
for f in [np.sin, np.cos]:
plt.figure()
fm = plt.get_current_fig_manager()
fm.canvas.figure = fig
fig.canvas = fm.canvas
plt.plot(x, f(x))
plt.show()
plt.close()