>  기사  >  백엔드 개발  >  Matplotlib로 비차단 플로팅을 달성하는 방법은 무엇입니까?

Matplotlib로 비차단 플로팅을 달성하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-02 14:17:30793검색

How to Achieve Non-Blocking Plotting with Matplotlib?

Matplotlib를 사용한 비차단 플로팅 문제 해결

Matplotlib의 차단 특성은 실시간 데이터 시각화를 방해할 수 있습니다. 이 기사에서는 원래 문의에 제공된 예를 사용하여 이 문제를 극복하기 위한 솔루션을 탐색합니다.

문제: Qt4Agg 백엔드 문제

원본 코드는 Qt4Agg를 백엔드로 활용했는데, 이는 비차단 실행의 제한 사항. show(block=False)를 사용하면 Qt4Agg가 이 기능을 지원하지 않기 때문에 창이 정지될 수 있습니다.

해결책: 대화형 모드 및 일시 중지

matplotlib를 사용하여 비차단 플로팅을 달성하려면 두 가지 주요 단계가 중요합니다.

  1. 코드가 계속 실행되는 동안 matplotlib가 GUI 이벤트에 응답할 수 있도록 plt.ion()을 사용하여 대화형 모드를 활성화합니다.
  2. plt.pause( 시간)(예: 제공된 솔루션에서와 같이 plt.pause(0.001)) GUI에 플롯 다시 그리기를 포함하여 이벤트를 처리할 시간을 제공합니다.

업데이트된 코드

다음은 이러한 솔루션을 통합한 업데이트된 코드입니다.

<code class="python">import numpy as np
from matplotlib import pyplot as plt

def main():
    plt.axis([-50,50,0,10000])
    plt.ion()
    plt.show()

    x = np.arange(-50, 51)
    for pow in range(1,5):   # plot x^1, x^2, ..., x^4
        y = [Xi**pow for Xi in x]
        plt.plot(x, y)
        plt.draw()
        plt.pause(0.001)
        input("Press [enter] to continue.")

if __name__ == '__main__':
    main()</code>

이 코드를 사용하면 비차단 방식으로 기존 플롯을 업데이트하여 원활하고 응답성이 뛰어난 시각화 경험을 제공할 수 있습니다.

위 내용은 Matplotlib로 비차단 플로팅을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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