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아무 소용.

어떤 아이디어?

답변:


112

차라리 사용하는 것이 plt.clf()모든 이후 plt.show()바로 현재의 모습을 취소 하는 대신 닫고이를 재개, 창 크기를 유지하고 당신에게 더 나은 성능과 더 나은 메모리 사용량을주는.

마찬가지로 plt.cla() 현재 좌표축을 지울있습니다 .

특정 좌표축 을 지우려면 하나의 Figure 내에 여러 개의 좌표축이있을 때 유용합니다. 예를 들면 다음과 같습니다.

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

axes[0, 1].clear()

47

이 동작은 질문에있는 것과 유사한 특정 스크립트를 실행 한 후에 만 ​​발생한다는 것을 발견했습니다. 왜 발생하는지 모르겠습니다.

내가 넣으면 작동합니다 (그래프 새로 고침)

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

매번 plt.show()

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.