Pycharm没有显示情节

Ras*_*sen 80 python matplotlib 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()
Run Code Online (Sandbox Code Playgroud)

会发生什么是窗口出现不到一秒钟,然后再次消失.

在相同的代码上使用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)]'}
Run Code Online (Sandbox Code Playgroud)

小智 77

只是用

plt.show()
Run Code Online (Sandbox Code Playgroud)

这样做,但我不知道为什么.

  • 我也总是忘记称呼它。这告诉系统实际上在 pycharm 中绘制它。Notebook默认会自动调用绘图和打印函数。我认为这样做是为了更快地制作原型。 (4认同)
  • 可能您在笔记本中不需要它,因为您做了类似“%matplotlib inline”的操作。@CGFox,绘制的意思是明确渲染到内存,但不显示到屏幕(或文件)。您需要 plt.pause(0.1) 来显示要显示的图,或者在代码中的其他点调用 plt.show(pause=True) 来让它们渲染 (4认同)
  • 真是太神奇了-这对我有用,其他人都没有。令人惊讶的是,我在Jupyter Notebook中不需要plt.show(),不知道为什么PyCharm中的行为不同 (2认同)
  • 我错了,还是这个答案在技术上是错误的?他使用“import matplotlib as plt”,所以它应该是“plt.pyplot.show()”或注释,我们使用常见的“import matplotlib.pyplot as plt”!? (2认同)

小智 52

我意识到这已经过时了,但我想我会清除对其他旅行者的误解.将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.show(block = True)添加到我的函数末尾对我有用.谢谢你的澄清.(Python 3.x,PyCharm 2016.1.4,Ubuntu) (13认同)
  • 看起来 Pycharm 不喜欢交互模式。即使打开它并调用“plt.show()”,我也会得到一个冻结且空白的显示窗口。我必须强迫关闭蟒蛇继续前进。但是,设置“plt.show(block=True)”会产生所需的行为。 (2认同)

Dan*_*anT 34

I had the same problem. Check wether plt.isinteractive() is True. Setting it to 'False' helped for me.

plt.interactive(False)
Run Code Online (Sandbox Code Playgroud)

  • 调用plt.show(block = True)帮助我显示一次图表.但即使在关闭图表窗口后,控制台仍被阻止. (9认同)
  • 正确的解决方案是设置plt.show(block = True),如@charlie在下面建议的那样.添加此行后,plt.interactive()标志的值与正在显示的绘图无关. (8认同)

小智 27

我尝试了不同的解决方案,但最终对我有用的是plt.show(block=True).您需要在命令之后添加此命令才能使此命令myDataFrame.plot()生效.如果您有多个绘图,只需在代码末尾添加命令即可.它将允许您查看您正在绘制的每个数据.

  • 这为我做到了。应该是公认的答案。与plt.interactive()混在一起*什么都没有* (2认同)

Joe*_*son 17

import matplotlib
matplotlib.use('TkAgg')
Run Code Online (Sandbox Code Playgroud)

适合我.(PyCharm/OSX)


小智 13

我找到了解决方案.这对我有用:

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()
Run Code Online (Sandbox Code Playgroud)

  • 问题中缺少的重要行是plt.show() (2认同)

tai*_*ren 11

我在我的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)
Run Code Online (Sandbox Code Playgroud)


小智 6

致电后不久

plt.imshow() 
Run Code Online (Sandbox Code Playgroud)

呼叫

plt.show(block = True)
Run Code Online (Sandbox Code Playgroud)

您将获得带有图像的matplotlib弹出窗口。

这是一种阻止方式。在弹出窗口关闭之前,其他脚本将无法运行。


Abd*_*qat 6

以上都不对我有用,但以下做了:

  1. 禁用 pycharm 中的复选框(在工具窗口中显示图)settings > Tools > Python Scientific

  2. 我收到了错误No PyQt5 module found。继续安装PyQt5using :

    sudo apt-get install python3-pyqt5
    
    Run Code Online (Sandbox Code Playgroud)

请注意,对于某些人来说,仅第一步就足够了并且有效。


小智 5

对我来说问题是matplotlib使用了错误的后端.我正在使用Debian Jessie.

在控制台中,我执行了以下操作:

import matplotlib
matplotlib.get_backend()
Run Code Online (Sandbox Code Playgroud)

结果是:'agg',而这应该是'TkAgg'.

解决方案很简单:

  1. 通过pip卸载matplotlib
  2. 安装相应的库:sudo apt-get install tcl-dev tk-dev python-tk python3-tk
  3. 再次通过pip安装matplotlib.


小智 5

只需添加plt.pyplot.show(),那没关系.

最好的解决方案是禁用SciView.