99

你如何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

有任何想法吗?

4

2 回答 2

122

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()
于 2013-06-14T11:36:01.660 回答
57

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

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

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

每次之后plt.show()

于 2013-06-14T10:31:13.847 回答