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作为解释器,两者具有相同的结果.
这是我的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)]'}
小智.. 77
只是用
plt.show()
这样做,但我不知道为什么.
我找到了解决方案.这对我有用:
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()
对我来说问题是matplotlib使用了错误的后端.我正在使用Debian Jessie.
在控制台中,我执行了以下操作:
import matplotlib matplotlib.get_backend()
结果是:'agg',而这应该是'TkAgg'.
解决方案很简单:
通过pip卸载matplotlib
安装相应的库:sudo apt-get install tcl-dev tk-dev python-tk python3-tk
再次通过pip安装matplotlib.
只需添加plt.pyplot.show()
,那没关系.
最好的解决方案是禁用SciView.
只是用
plt.show()
这样做,但我不知道为什么.
致电后不久
plt.imshow()
呼叫
plt.show(block = True)
您将获得带有图像的matplotlib弹出窗口。
这是一种阻止方式。在弹出窗口关闭之前,其他脚本将无法运行。
我在我的Pycharm版本(Community Edition 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)
我尝试了不同的解决方案,但最终对我有用的是plt.show(block=True)
.您需要在命令之后添加此命令才能使此命令myDataFrame.plot()
生效.如果您有多个绘图,只需在代码末尾添加命令即可.它将允许您查看您正在绘制的每个数据.
我意识到这已经过时了,但我想我会清除对其他旅行者的误解.将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'来缩短这些语句.
I had the same problem. Check wether plt.isinteractive()
is True. Setting it to 'False' helped for me.
plt.interactive(False)
import matplotlib matplotlib.use('TkAgg')
适合我.(PyCharm/OSX)