Matplotlib.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() не работает после закрытия

(python) matplotlib pyplot show().. блокировка или нет?

и попытался использовать plt.show(), plt.clf() и plt.close безрезультатно.

Любые идеи?

Ответ 1

Я бы предпочел использовать plt.gcf().clear() после каждого plt.show(). Он просто очистит фигуру, а не закрывает и снова открывает ее, сохраняя размер окна и улучшая производительность.

Ответ 2

Я обнаружил, что это поведение возникает только после запуска определенного script, аналогичного тому, что задается в вопросе. Я понятия не имею, почему это происходит.

Он работает (обновляет графики), если я помещаю

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

после каждого plt.show()