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


88

您如何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()一旦关闭就无法正常工作

(python)matplotlib pyplot show()..是否阻止?

并尝试使用plt.show()plt.clf()plt.close无济于事。

有任何想法吗?

Answers:


112

我宁愿plt.clf()每次都使用它plt.show()清除当前图形,而不是关闭并重新打开它,以保持窗口大小并为您提供更好的性能和更好的内存使用率。

同样,您可以plt.cla() 清除当前

要清除特定的轴(例如,在一个图形中有多个轴时很有用),您可以执行以下操作:

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

axes[0, 1].clear()

47

我发现这种行为仅在运行特定脚本后才会发生,类似于问题中的脚本。我不知道为什么会发生。

如果我把它工作(刷新图)

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

每次之后 plt.show()

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.