Matplotlib를 사용하여 비차단 방식으로 플로팅: 실행 문제 해결
실행을 중단하지 않고 Matplotlib를 사용하여 함수를 플로팅하려고 하면 GUI 및 백엔드 상호 작용과 관련된 어려움에 직면할 수 있습니다. 일반적인 오해 중 하나는 백엔드에 따라 항상 작동하지 않을 수 있는 show(block=False) 사용법입니다.
제공된 코드는 show(block=False) 사용법을 보여 주지만 귀하는 show()를 호출하기 전에 plt.ion()을 사용하지 마십시오. plt.ion()은 대화형 모드를 활성화하여 업데이트를 그리고 일시 중지할 수 있는 비차단 플로팅을 허용합니다.
plt.ion()이 활성화된 상태에서 plt.show()를 호출하여 플롯 창을 표시할 수 있습니다. . 이 창은 열려 있고 차단되지 않은 상태로 유지되므로 계속 실행할 수 있습니다. 그러나 업데이트된 플롯을 보려면 plt.draw()를 사용하여 캔버스를 다시 그리고 plt.pause(timeout)를 사용하여 짧은 기간 동안 실행을 일시 중지해야 합니다. plt.pause()의 시간 초과 매개변수는 일시 중지 기간을 초 단위로 결정합니다.
특정한 경우 plt.plot()을 호출할 때마다 새 플롯이 생성된다는 점에 유의하는 것도 중요합니다. 같은 창에서 생성됩니다. 대신 기존 플롯을 업데이트하려면 plt.plot(x, y, color='r')을 사용해야 합니다. 이렇게 하면 기존 플롯을 유지하면서 새 데이터 포인트가 빨간색으로 플롯됩니다.
다음은 비차단 문제를 해결하고 기존 플롯을 업데이트해야 하는 수정된 버전의 코드입니다.
<code class="python">import matplotlib.pyplot as plt import numpy as np def main(): plt.ion() # Activate interactive mode plt.show() # Display the plot window plt.axis([-50,50,0,10000]) x = np.arange(-50, 51) for pow in range(1,5): y = [Xi**pow for Xi in x] plt.plot(x, y, color='r') # Update the plot in red color plt.draw() plt.pause(0.001) # Pause for a brief period input("Press [enter] to continue.") if __name__ == '__main__': main()</code>
위 내용은 Matplotlib를 사용하여 비차단 방식으로 플롯하는 방법: `show(block=False)`가 항상 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!