2016-10-18 2 views
0

ipython 프롬프트에서 matplotlib을 사용하여 일부 플롯을 표시하고 있습니다. 플롯 창을 닫을 때 사라지지 않고 백그라운드에서 멈추어 사용자 동작에 응답하지 않습니다. ipython 모드에서 끝낼 때 내 플롯이 사라지지 않는 이유는 무엇입니까?

# test.py 
import matplotlib.pyplot as plt 

def f(): 
    plt.plot([1, 2, 3], [4, 3, 5]) 
    plt.show() 

하고 프롬프트

pingul $ ipython 
Python 3.5.2 (default, Jun 27 2016, 03:10:38) 
Type "copyright", "credits" or "license" for more information. 

IPython 5.1.0 -- An enhanced Interactive Python. 

In [1]: import test 
In [2]: test.f() 
### Trying to close it now doesn't work 

에서

이 버그, 아니면 어떻게 든 문제를 해결할 수있는 다음과 같은 코드를 사용하여 그것을 자신을 시도 할 수 있습니다?

정상적인 파이썬 프롬프트에서 같은 코드를 실행하면 예상대로 작동합니다.

+0

플로팅하기 전에'% matplotlib'을 실행하여 IPython이 플롯을 보여주는 GUI 이벤트 루프와 통합되도록하십시오. –

+0

@ThomasK 그거야! 나는 플로팅이 이전에 차단하고 있었고'% matplotlib'을 사용하여 그것을 제거했지만, 나는 그것을 해결할 수 있습니다. 답변으로 의견을 추가 하시겠습니까? – pingul

답변

0

플로팅하기 전에 %matplotlib을 실행하여 IPython이 플롯을 보여주는 GUI 이벤트 루프와 통합되도록하십시오.

matplotlib 2.0이 릴리즈되면 IPython 내부에서 실행될 때이를 감지 할 수있는 코드가 있기 때문에 이것은 필요하지 않습니다.

0

ipython에서 pyplot을 사용할 때는 조심해야합니다. 특히 plt.show()은 ipython 터미널을 차단하고 있습니다. ipython을 차단하지 않으므로 fig.show()을 사용해야합니다. pyplot을 정말로 사용하고 싶다면 plt.gcf().show()을 사용하면 현재 그림 (gcf = 현재 그림 얻기)이 표시되고 그 그림 만 표시됩니다. 그러나 그림을 fig = plt.figure()으로 만든 다음 fig.show()을 사용하는 것이 좋습니다.

파이썬으로 실행할 경우 plt.show()! 그렇지 않으면 숫자가 표시되고 즉시 닫힙니다.

관련 문제