>백엔드 개발 >파이썬 튜토리얼 >오버레이 없이 Matplotlib 플롯을 효율적으로 업데이트하는 방법은 무엇입니까?

오버레이 없이 Matplotlib 플롯을 효율적으로 업데이트하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-15 10:42:15634검색

How to Efficiently Update Matplotlib Plots Without Overlaying?

Matplotlib에서 플롯 업데이트

Matplotlib에서 플롯을 다시 그리는 것은 어려울 수 있으며, 특히 추가 플롯을 추가하지 않고 업데이트해야 하는 경우 더욱 그렇습니다. 이 질문은 이 문제를 극복하는 방법을 탐구합니다.

문제는 플롯() 함수가 호출될 때마다 새 플롯을 생성하는 Figure 및 FigureCanvasTkAgg의 사용에서 발생합니다. 이로 인해 여러 플롯이 업데이트되지 않고 서로 겹쳐집니다.

이 문제를 해결하려면 다음 두 가지 옵션을 사용할 수 있습니다.

옵션 1: 지우기 및 다시 플롯

이것은 가장 간단한 옵션이지만 가장 느립니다. 새 데이터를 다시 플롯하기 전에 기존 플롯을 지우는 작업이 포함됩니다. 이는 그래프() 함수의 시작 부분에 graph1.clear() 및 graph2.clear()를 추가하여 수행할 수 있습니다. 이 접근 방식은 간단하지만 계산 집약적이며 실시간 업데이트에 적합하지 않을 수 있습니다.

옵션 2: 데이터 업데이트

보다 효율적인 접근 방식은 다음과 같습니다. 기존 플롯 객체의 데이터를 업데이트합니다. 이를 위해서는 새 선을 생성하는 대신 선의 ydata를 업데이트하도록 플롯() 함수를 수정해야 합니다. 이 방법은 훨씬 빠르지만 데이터 모양과 축 제한을 주의 깊게 처리해야 합니다.

예:

# Update the y-data of the existing line
line1.set_ydata(np.sin(x + phase))
# Draw the updated plot
fig.canvas.draw()
# Flush any pending events
fig.canvas.flush_events()

이 방법을 사용하면 지우고 다시 플롯할 필요 없이 플롯을 효율적으로 업데이트할 수 있습니다. 전체 그림. 특히 동적 데이터의 실시간 시각화에 유용합니다.

위 내용은 오버레이 없이 Matplotlib 플롯을 효율적으로 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.