matplotlib.pyplot不会忘记以前的情节 - 如何刷新/刷新?

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()