Pycharm不显示图形

170 投票
25 回答
323373 浏览
提问于 2025-04-18 14:15

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()

发生的情况是,一个窗口出现不到一秒钟,然后又消失了。

而在同样的代码下,使用Pyzo IEP IDE(用的是同一个解释器)时,图表正常显示。

...所以问题可能出在Pycharm的某个设置上。我尝试过用python.exe和pythonw.exe作为解释器,结果都是一样。

这是我的系统信息:

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)]'}

25 个回答

37
import matplotlib
matplotlib.use('TkAgg')

对我来说没问题。(在PyCharm和Mac电脑上)

37

我尝试了很多不同的方法,但最后对我有效的是 plt.show(block=True) 这个命令。你需要在 myDataFrame.plot() 这个命令之后加上这个命令,才能让它生效。如果你有多个图表,只需在代码的最后加上这个命令就可以了。这样你就能看到你绘制的每一个数据图了。

37

我也遇到过同样的问题。你可以检查一下 plt.isinteractive() 这个函数的返回值是否为真。如果它是假的话,把它设置为'False'对我有帮助。

plt.interactive(False)
69

我知道这个问题有点老了,但我想给其他人澄清一下一个误解。把 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

194

只需要使用

import matplotlib.pyplot as plt
plt.show()

这个命令告诉系统在Pycharm中绘制图表。

举个例子:

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

撰写回答