파이썬 인터프리터에서 이러한 지시를 한 후 플롯이있는 창을 얻습니다.
from matplotlib.pyplot import *
plot([1,2,3])
show()
# other code
불행히도, show()
프로그램이 추가 계산을 수행 하는 동안 생성 된 그림을 대화 형으로 계속 탐색하는 방법을 모르겠습니다 .
전혀 가능합니까? 때로는 계산이 길고 중간 결과를 조사하는 동안 진행하면 도움이 될 것입니다.
답변
matplotlib
차단하지 않는의 통화를 사용하십시오 .
사용 draw()
:
from matplotlib.pyplot import plot, draw, show
plot([1,2,3])
draw()
print 'continue computation'
# at the end call show to ensure window won't close.
show()
대화식 모드 사용 :
from matplotlib.pyplot import plot, ion, show
ion() # enables interactive mode
plot([1,2,3]) # result shows immediatelly (implicit draw())
print 'continue computation'
# at the end call show to ensure window won't close.
show()
답변
차단 동작을 무시하려면 키워드 ‘block’을 사용하십시오. 예 :
from matplotlib.pyplot import show, plot
plot(1)
show(block=False)
# your code
코드를 계속합니다.
답변
비 블로킹 방식으로 사용을 지원하는 경우 사용중인 라이브러리를 항상 확인하는 것이 좋습니다 .
그러나보다 일반적인 솔루션을 원하거나 다른 방법이 없다면 multprocessing
파이썬에 포함 된 모듈 을 사용하여 분리 된 프로세스에서 차단하는 것을 실행할 수 있습니다 . 계산은 계속됩니다 :
from multiprocessing import Process
from matplotlib.pyplot import plot, show
def plot_graph(*args):
for data in args:
plot(data)
show()
p = Process(target=plot_graph, args=([1, 2, 3],))
p.start()
print 'yay'
print 'computation continues...'
print 'that rocks.'
print 'Now lets wait for the graph be closed to continue...:'
p.join()
즉 새로운 프로세스를 실행의 오버 헤드를 가지고, 내가 (사용하여 다른 솔루션을 선호하는 것 때문에, 복잡한 시나리오에 디버그 때로는 어렵 matplotlib
의 블로킹 API 호출 )
답변
시험
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.show(block=False)
# other code
# [...]
# Put
plt.show()
# at the very end of your script to make sure Python doesn't bail out
# before you finished examining.
show()
문서는 말합니다 :
비 대화식 모드에서는 모든 그림을 표시하고 그림이 닫힐 때까지 차단하십시오. 대화식 모드에서는 비 대화식 모드에서 대화식 모드로 변경하기 전에 그림을 작성하지 않으면 효과가 없습니다 (권장되지 않음). 이 경우 수치는 표시되지만 차단되지는 않습니다.
단일 실험 키워드 인수 인 block은 위에서 설명한 차단 동작을 무시하기 위해 True 또는 False로 설정 될 수 있습니다.
답변
중요 : 그냥 명확하게하기 위해. 나는 명령이 .py
스크립트 안에 있고 스크립트 python script.py
는 콘솔에서 예를 들어 사용 한다고 가정합니다 .
나를 위해 작동하는 간단한 방법은 다음과 같습니다.
- show = block 내에서 block = False 사용 : plt.show (block = False)
- .py 스크립트 끝에 다른 show () 를 사용하십시오 .
script.py
파일 예 :
plt.imshow(*something*)
plt.colorbar()
plt.xlabel("true ")
plt.ylabel("predicted ")
plt.title(" the matrix")
# Add block = False
plt.show(block = False)
################################
# OTHER CALCULATIONS AND CODE HERE ! ! !
################################
# the next command is the last line of my script
plt.show()
답변
답변
필자의 경우 계산할 때 여러 개의 창이 나타나기를 원했습니다. 참고로이 방법은 다음과 같습니다.
from matplotlib.pyplot import draw, figure, show
f1, f2 = figure(), figure()
af1 = f1.add_subplot(111)
af2 = f2.add_subplot(111)
af1.plot([1,2,3])
af2.plot([6,5,4])
draw()
print 'continuing computation'
show()
추신. matplotlib의 OO 인터페이스에 대한 유용한 안내서 입니다.