ato*_*3ls 71 python matplotlib
你如何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()
Run Code Online (Sandbox Code Playgroud)
不幸的是,无论我做什么,我都会得到相同的情节(实际上来自我之前运行和完成的其他代码).
类似的代码以前对我有效.
我看过这些问题:
Matplotlib pyplot show()一旦关闭就不起作用
(python)matplotlib pyplot show()..阻塞与否?
并尝试使用plt.show(),plt.clf()并plt.close无济于事.
有任何想法吗?
Sau*_*tro 98
我宁愿plt.clf()在每一个之后使用plt.show(),只是清除当前的数字而不是关闭并重新打开它,保持窗口大小并为您提供更好的性能和更好的内存使用.
同样,您可以plt.cla() 只清除当前轴.
要清除特定的轴,在一个图中有多个轴时很有用,例如:
fig, axes = plt.subplots(nrows=2, ncols=2)
axes[0, 1].clear()
Run Code Online (Sandbox Code Playgroud)
ato*_*3ls 33
我发现这种行为只发生在运行特定脚本之后,类似于问题中的脚本.我不知道为什么会这样.
如果我放,它可以工作(刷新图表)
plt.clf()
plt.cla()
plt.close()
Run Code Online (Sandbox Code Playgroud)
每一次之后 plt.show()