source

matplotlib의 플롯을 클리어하기 위해 cla(), clf() 또는 close()를 사용하는 경우

manycodes 2022. 10. 26. 21:12
반응형

matplotlib의 플롯을 클리어하기 위해 cla(), clf() 또는 close()를 사용하는 경우

Matplotlib은 다음 기능을 제공합니다.

cla()   # Clear axis
clf()   # Clear figure
close() # Close a figure window

각 기능은 언제 사용해야 하며 정확히 어떤 기능을 합니까?

matplotlib은 그림 창에 여러 축으로 구성될 수 있는 그림이 포함된 계층적 순서를 사용하기 때문에 이러한 두 가지 작업은 모두 다릅니다.또한, Pyplot 인터페이스로부터의 함수와 방법들이 있습니다.Figure두 가지 사례에 대해 아래에서 논의하겠습니다.

파이플롯 계면

pyplot는 matplotlib를 기능적으로 사용할 수 있는 몇 가지 기능을 수집하는 모듈입니다.여기서 추측하건대pyplot로 Import 되었습니다.import matplotlib.pyplot as plt이 경우 다음 3가지 명령어가 있습니다.

'기능'을 참조해 주세요.

  • plt.cla(), 즉 현재 그림의 현재 활성 축을 지웁니다.다른 도끼는 손대지 않고 놔둬요.
  • plt.clf() 모든 축이 있는 현재 그림 전체를 지우지만 다른 플롯에 재사용할 수 있도록 창을 열어 둡니다.
  • plt.close() 특별히 지정하지 않는 한 현재 창이 닫힙니다.

따라서 어떤 기능이 가장 적합한지는 사용 사례에 따라 달라집니다.

close()또한 어떤 창을 닫아야 하는지 지정할 수 있습니다.인수는 창 작성 시 지정한 숫자 또는 이름 중 하나입니다.figure(number_or_name)또는 그림 인스턴스일 수도 있습니다.fig취득한, 즉, 사용fig = figure()에 대해 아무런 논거가 없는 경우close()현재 활성 창이 닫힙니다.또한, 다음과 같은 구문이 있습니다.close('all')이것으로 모든 수치가 마감됩니다.

그림 클래스의 메서드

게다가Figureclass는 수치를 클리어하는 방법을 제공합니다.다음과 같이 가정하겠습니다.fig의 인스턴스입니다.Figure:

fig.clf() 그림 전체를 클리어합니다.이 콜은 다음과 같습니다.plt.clf()이 경우에만fig현재 수치입니다.

fig.clear()와 동의어이다.fig.clf()

주의해 주세요.del fig는 관련 그림 창을 닫지 않습니다.그림 창을 닫으려면plt.close(fig)상기와 같이

오늘 제가 발견한 주의사항이 하나 있습니다.플롯을 자주 호출하는 함수가 있는 경우plt.close(fig)대신fig.clf()첫 번째는 기억 속에 축적되지 않는다., 메모리가 문제가 되는 경우는, plt.close(그림)를 사용해 주세요(더 좋은 방법이 있는 것 같습니다만, 관련하는 링크에 대해서는, 이 코멘트의 마지막에 액세스 해 주세요).

따라서 다음 스크립트는 빈 목록을 생성합니다.

for i in range(5):
    fig = plot_figure()
    plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())

반면, 이것은 5개의 숫자가 적힌 목록을 만들 것입니다.

for i in range(5):
    fig = plot_figure()
    fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())

위 문서에서는 그림을 닫는 것과 창을 닫는 것의 차이를 알 수 없습니다.그게 분명해질지도 몰라.

완전한 스크립트를 시험해 보는 경우는, 다음의 조작이 있습니다.

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1000)
y = np.sin(x)

for i in range(5):
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.plot(x, y)
    plt.close(fig)

print(plt.get_fignums())

for i in range(5):
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.plot(x, y)
    fig.clf()

print(plt.get_fignums())

메모리가 문제인 경우 누군가가 이미 SO에 회피책을 게시한 경우: 참조 카운트를 할 수 있는 수치를 작성하십시오.

plt.cla()클리어 전류 축을 의미합니다.

plt.clf()클리어 전류 수치를 의미합니다.

또한 plt.gca() (현재 축을 취득함)와 plt.gcf() (현재 수치를 취득함)가 있습니다.

자세한 내용은 여기를 참조하십시오: Matplotlib, Pyplot, Pylab: 이것들과 사용 시점의 차이는 무엇입니까?

언급URL : https://stackoverflow.com/questions/8213522/when-to-use-cla-clf-or-close-for-clearing-a-plot-in-matplotlib

반응형