Pyplot 不会忘记以前的情节——如何刷新/刷新?

如何让 matplotlib.pyplot“忘记”以前的情节

我正在尝试使用 matplotlib.pyplot多次绘图

代码如下:

def plottest():
import numpy as np
import matplotlib.pyplot as plt




a=np.random.rand(10,)
b=np.random.rand(10,)
c=np.random.rand(10,)




plt.plot(a,label='a')
plt.plot(b,label='b')
plt.plot(c,label='c')
plt.legend(loc='upper left')
plt.ylabel('mag')
plt.xlabel('element)')
plt.show()


e=np.random.rand(10,)
f=np.random.rand(10,)
g=np.random.rand(10,)




plt.plot(e,label='e')
plt.plot(f,label='f')
plt.plot(g,label='g')
plt.legend(loc='upper left')
plt.ylabel('mag')
plt.xlabel('element)')
plt.show()

不幸的是,无论我做什么,我总是得到相同的情节(实际上来自我前一段时间运行和完成的其他代码)。

类似的代码以前对我也有效。

我研究过这些问题:

如何“洗心革面”?

Matplotlib pyplot show ()一旦关闭就无法工作

Matplotlib pyplot show () . . 阻止还是不阻止?

并尝试使用 plt.show()plt.clf()plt.close无效。

有什么想法吗?

137874 次浏览

I discovered that this behaviour only occurs after running a particular script, similar to the one in the question. I have no idea why it occurs.

It works (refreshes the graphs) if I put

plt.clf()
plt.cla()
plt.close()

after every plt.show()

I would rather use plt.clf() after every plt.show() to just clear the current figure instead of closing and reopening it, keeping the window size and giving you a better performance and much better memory usage.

Similarly, you could do plt.cla() to just clear the current axes.

To clear a specific axes, useful when you have multiple axes within one figure, you could do for example:

fig, axes = plt.subplots(nrows=2, ncols=2)


axes[0, 1].clear()