[python] Pycharm이 플롯을 표시하지 않습니다.

Pycharm은 다음 코드의 플롯을 표시하지 않습니다.

import pandas as pd
import numpy as np
import matplotlib as plt

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

ts = ts.cumsum()    
ts.plot()

무슨 일이 일어나고 있는지 창이 1 초 미만 동안 나타났다가 다시 사라집니다.

동일한 코드에서 Pyzo IEP IDE (동일한 인터프리터 사용)를 사용하면 플롯이 예상대로 표시됩니다.

… 따라서 문제는 Pycharm의 일부 설정에 있어야합니다. python.exe와 pythonw.exe를 모두 동일한 결과로 인터프리터로 사용해 보았습니다.

이것은 내 sys_info입니다.

C:\pyzo2014a\pythonw.exe -u C:\Program Files (x86)\JetBrains\PyCharm Community Edition 3.4.1\helpers\pydev\pydevconsole.py 57315 57316
PyDev console: using IPython 2.1.0import sys; print('Python %s on %s' % (sys.version, sys.platform))
Python 3.4.1 |Continuum Analytics, Inc.| (default, May 19 2014, 13:02:30) [MSC v.1600 64 bit (AMD64)] on win32
sys.path.extend(['C:\\Users\\Rasmus\\PycharmProjects\\untitled2'])
In[3]: import IPython
print(IPython.sys_info())
{'commit_hash': '681fd77',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': 'C:\\pyzo2014a\\lib\\site-packages\\IPython',
 'ipython_version': '2.1.0',
 'os_name': 'nt',
 'platform': 'Windows-8-6.2.9200',
 'sys_executable': 'C:\\pyzo2014a\\pythonw.exe',
 'sys_platform': 'win32',
 'sys_version': '3.4.1 |Continuum Analytics, Inc.| (default, May 19 2014, '
                '13:02:30) [MSC v.1600 64 bit (AMD64)]'}



답변

그냥 사용

plt.show()

이 명령은 Pycharm에서 플롯을 그리도록 시스템에 지시합니다.

예:

plt.imshow(img.reshape((28, 28)))
plt.show()


답변

나는 이것이 오래되었다는 것을 알고 있지만 다른 여행자에 대한 오해를 해소 할 것이라고 생각했습니다. 로 설정 plt.pyplot.isinteractive()하면 False그릴 특정 명령 (예 :)에 플롯이 그려집니다 plt.pyplot.show(). 로 설정 plt.pyplot.isinteractive()하면 True모든 pyplot( plt) 명령이 그리기 명령 (예 :)을 트리거합니다 plt.pyplot.show(). 그래서 당신이 찾던 것보다 더 많은 것은 당신 plt.pyplot.show()의 프로그램 끝에 그래프를 표시하는 것입니다.

참고로 . import matplotlib.pyplot as plt대신 다음 가져 오기 명령을 사용하여 이러한 명령문을 약간 줄일 수 있습니다 matplotlib as plt.


답변

나는 같은 문제가 있었다. plt.isinteractive()사실인지 확인하십시오 . ‘False’로 설정하면 도움이되었습니다.

plt.interactive(False)


답변

나는 다른 해결책을 시도했지만 마침내 나를 위해 일한 것은 plt.show(block=True). 이 명령을 적용하려면 myDataFrame.plot()명령 뒤에이 명령을 추가해야합니다 . 플롯이 여러 개인 경우 코드 끝에 명령을 추가하십시오. 플로팅하는 모든 데이터를 볼 수 있습니다.


답변

import matplotlib
matplotlib.use('TkAgg')

나를 위해 작동합니다. (PyCharm / OSX)


답변

내 버전의 Pycharm (커뮤니티 에디션 2017.2.2)에서 테스트합니다. 다음과 같이 plt.interactive (False) 및 plt.show (block = True)를 모두 발표해야 할 수도 있습니다.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 6.28, 100)

plt.plot(x, x**0.5, label='square root')
plt.plot(x, np.sin(x), label='sinc')

plt.xlabel('x label')
plt.ylabel('y label')

plt.title("test plot")

plt.legend()

plt.show(block=True)
plt.interactive(False)


답변

해결책을 찾았습니다. 이것은 나를 위해 일했습니다.

import numpy as np
import matplotlib.pyplot as plt

points = np.arange(-5, 5, 0.01)
dx, dy = np.meshgrid(points, points)
z = (np.sin(dx)+np.sin(dy))
plt.imshow(z)
plt.colorbar()
plt.title('plot for sin(x)+sin(y)')
plt.show()