2016-08-18 4 views
1

Win7 시스템에서 Canopy를 사용하고 있으며 %pylab이 활성화되어 있고 대화식 (Qt4)이 백엔드로 사용됩니다. IMHO, 나는 이상한 행동을 matplotlib으로 생각하고있다.즉시 matplotlib에 그래프 내용을 표시합니다.

코드가 한 줄씩 실행되면 그래프의 프레임은 예상대로 나타나지만 그래프의 내용은 표시되지 않습니다. 음모를 꾸미고 난 후에 그래프에 관한 정보가 필요하다면, 나는 그것을 볼 수 없기 때문에 제대로 대답 할 수 없다. 더미 응답으로 질문에 대답하면 그래프가 나타납니다.

내가 얻고 싶은 것은 대답하기위한 정보를 얻기 위해 질문을하기 전에 그래프를 보여야한다는 것입니다.

미리 감사드립니다.

은 MWE에게

import numpy as np 
import matplotlib.pyplot as plt 

N = 8 
y = np.zeros(N) 
x1 = np.linspace(0, 10, N, endpoint=True) 
x2 = np.linspace(0, 10, N, endpoint=False) 
plt.figure() 
plt.plot(x1, y, 'o') 
plt.plot(x2, y + 0.5, 'o') 
plt.ylim([-0.5, 1]) 
plt.show() 


y1 = np.random.random(8) 
plt.figure() 
plt.plot(x1, y1) 
plt.show() 

dummy = raw_input("What is the third point in the second graph?") 

편집이다 : 나는 대화 형 (WX) 대화 형 (QT4)에서 숲의 백엔드를 변경하면 예상대로 작동합니다.

+0

체크 아웃 사용할 수 있습니다 http://stackoverflow.com/questions/5524858/matplotlib-show-doesnt-work-twice –

답변

1

내가 이해한다면, 문제는 plt.show이 차단되고 첫 번째 그림이 닫힐 때까지 두 번째 그림이 플롯되지 않는다는 것입니다. 다른 백엔드에서는 동작이 다를 수 있지만 한 번 이상 show를 호출하면 안됩니다 (matplotlib show() doesn't work twice 참조). 여기에 두 개의 subplots을 사용하고 raw_input 블록으로 차단을 해제하고 그림이 표시된 입력을 입력 할 수 있습니다. 그러면 코드는 다음과 같이 보입니다.

import numpy as np 
import matplotlib.pyplot as plt 

N = 8 
y = np.zeros(N) 
x1 = np.linspace(0, 10, N, endpoint=True) 
x2 = np.linspace(0, 10, N, endpoint=False) 
fig,ax = plt.subplots(2,1) 
ax[0].plot(x1, y, 'o') 
ax[0].plot(x2, y + 0.5, 'o') 
ax[0].set_ylim([-0.5, 1]) 

y1 = np.random.random(8) 
ax[1].plot(x1, y1) 
plt.show(block=False) 

dummy = raw_input("What is the third point in the second graph?") 
print("dummy = ", dummy) 

+0

답변 해 주셔서 감사합니다. 불행히도, 그것은 내 경우에도 작동하지 않았다. 반면에 Canopy의 백엔드를 대화식 (Qt4)에서 대화식 (wx)으로 변경하면 코드와 코드가 모두 작동합니다! –

1

Ed Smith가 말한 것처럼 plt.show()에 대한 첫 번째 호출 만 작동합니다. 당신이 그림을 다시 그리기를 강제하려면 , 당신은 figure.canvas.draw()

import matplotlib.pyplot as plt 

fig = plt.figure() 
plt.plot([0, 1], [2, 3]) 
plt.show() 

#do more stuff, get user input 

plt.plot([5,6], [-7, -8]) 
fig.canvas.draw() 

enter image description here

관련 문제