나는 지난 며칠 동안 Numpy와 matplotlib을 가지고 놀았습니다. matplotlib 플롯을 실행 차단하지 않고 함수로 만드는 데 문제가 있습니다. 나는 비슷한 질문을하는 SO에 이미 많은 스레드가 있다는 것을 알고 있으며, 많은 것을 구글 검색했지만이 작업을 수행하지는 못했습니다.
일부 사람들이 제안한대로 show (block = False)을 사용해 보았지만 얻는 것은 고정 된 창입니다. 단순히 show ()를 호출하면 결과가 올바르게 표시되지만 창이 닫힐 때까지 실행이 차단됩니다. 내가 읽은 다른 스레드에서 show (block = False) 작동 여부는 백엔드에 따라 달라집니다. 이 올바른지? 백엔드는 Qt4Agg입니다. 내 코드를보고 문제가 있는지 말해 주시겠습니까? 여기 내 코드가 있습니다. 도움을 주셔서 감사합니다.
from math import *
from matplotlib import pyplot as plt
print plt.get_backend()
def main():
x = range(-50, 51, 1)
for pow in range(1,5): # plot x^1, x^2, ..., x^4
y = [Xi**pow for Xi in x]
print y
plt.plot(x, y)
plt.draw()
#plt.show() #this plots correctly, but blocks execution.
plt.show(block=False) #this creates an empty frozen window.
_ = raw_input("Press [enter] to continue.")
if __name__ == '__main__':
main()
추신. 새 창을 만드는 대신 무언가를 그릴 때마다 기존 창을 업데이트하고 싶다고 말하지 않았습니다.
matplotlib
.
plt.ion()
전에 matplotlib 대화식 모드를 사용해 보셨습니까plt.show()
? 그런 다음 각 플롯이 자식 스레드로 생성 될 때 차단되지 않아야합니다.