Pycharm没有显示情节

时间:2014-07-22 11:50:33

标签: 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()

发生的情况是窗口出现的时间不到一秒钟,然后再次消失。

在相同的代码上使用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)]'}

25 个答案:

答案 0 :(得分:53)

只需使用

plt.show()

它可以解决问题,但我不知道为什么。

答案 1 :(得分:45)

我意识到这已经过时了,但我想我会清除对其他旅行者的误解。将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'来缩短这些语句

答案 2 :(得分:30)

我遇到了同样的问题。检查plt.isinteractive()是否为True。将其设置为“假”'对我有帮助。

plt.interactive(False)

答案 3 :(得分:25)

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

答案 4 :(得分:16)

import matplotlib
matplotlib.use('TkAgg')

适合我。 (PyCharm / OSX)

答案 5 :(得分:12)

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

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

答案 6 :(得分:10)

我在我的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)

答案 7 :(得分:5)

对我而言,问题在于matplotlib使用了错误的后端。我正在使用Debian Jessie。

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

import matplotlib
matplotlib.get_backend()

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

解决方案很简单:

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

答案 8 :(得分:5)

只需添加plt.pyplot.show()即可。

最佳解决方案是禁用SciView。

答案 9 :(得分:4)

致电后不久

plt.imshow() 

呼叫

plt.show(block = True)

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

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

答案 10 :(得分:3)

我在PyCharm 2017.1.2上测试了我的版本。我使用了交互式(True)和show(block = True)。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1//2000',periods=1000))
ts = ts.cumsum()
plt.interactive(True)
ts.plot()
plt.show(block=True)

答案 11 :(得分:2)

我有这个问题,我可以解决,您可以测试我的方式。 从设置->工具-> python科学

中禁用“在工具窗口中显示图”

答案 12 :(得分:2)

我的环境:macOS& anaconda3

这对我有用:

matplotlib.use('macosx')

或互动模式:

matplotlib.use('TkAgg')

答案 13 :(得分:1)

在非交互式环境中,我们必须使用plt.show(block = True)

答案 14 :(得分:1)

以上都不适合我,但以下内容适用于我:

  1. 禁用pycharm设置>“工具”>“ Python科学”中的复选框(在工具窗口中显示图)。
  2. 我收到错误消息“找不到PyQt5模块”。继续使用PyQt5进行安装     sudo apt-get install python3-pyqt5

答案 15 :(得分:1)

就我而言,我想做以下事情:

int func(int x, int y)
{
   return (x<y)?0:(x-y);
}

a3 = func(a1,a2);
b3 = func(b1,b2);
c3 = func(c1,c2);

在这里混合使用各种解决方案后,我的解决方案是在此之前添加以下命令:

    plt.bar(range(len(predictors)), scores)
    plt.xticks(range(len(predictors)), predictors, rotation='vertical')
    plt.show()

使用以下两个导入

    matplotlib.get_backend()
    plt.interactive(False)
    plt.figure()

似乎在我的情况下所有命令都是必需的,MBP与ElCapitan和PyCharm 2016.2.3。问候!

答案 16 :(得分:1)

我能够得到一些其他建议的组合,但这只是在将plt.interactive(False)切换为'True'并再次返回时。

plt.interactive(True)
plt.pyplot.show()

这会闪现我的阴谋。然后设置为“False”允许查看。

plt.interactive(False)
plt.pyplot.show()

如前所述,我的程序在所有窗口关闭之前都不会退出。以下是我当前运行环境的一些细节: Python版本2.7.6 | Anaconda 1.9.2(x86_64)| (默认,2014年1月10日,11:23:15) [GCC 4.0.1(Apple Inc. build 5493)] 熊猫版:0.13.1

答案 17 :(得分:1)

DanT的评论为我解决了这个问题,matplotlib在linux上使用了pycharm和GTKagg后端。导入matplotlib后,我会收到以下错误:

method.invoke(this_parameter, new Object[]{ map });

当绘制类似的东西时:

>>> import matplotlib as mpl

Backend GTKAgg is interactive backend. Turning interactive mode on.
Failed to enable GUI event loop integration for 'gtk'

会弹出一个数字屏幕,但不会显示任何图表。 使用:

from matplotlib import pyplot as plt
plt.figure()
plt.plot(1,2)
plt.show()

正确显示图形。

答案 18 :(得分:1)

对于初学者,您可能还需要确保自己是running your script in the console,而不是常规Python代码。 highlight a piece of code and run it非常容易。

答案 19 :(得分:0)

需要为pycharm设置一个属性。

import matplotlib.pyplot as plt

plt.interactive(False)  #need to set to False

dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)

plt.show()

答案 20 :(得分:0)

将导入更改为:

"postinstall": "rm -rf ./node_modules/platform-server/node-modules/parse5"

或使用此行:

import matplotlib.pyplot as plt

答案 21 :(得分:0)

对于那些在IDE中运行脚本(并且不能在python控制台或笔记本等交互式环境中工作)的人,我发现这是最直观,最简单的解决方案:

plt.imshow(img)
plt.waitforbuttonpress()

它显示了该图并等待用户单击新窗口。只有这样,它才能继续执行脚本并运行其余代码。

答案 22 :(得分:0)

我正在使用Ubuntu,并且按上面的@Arie所述尝试过,但仅在终端中使用以下行:

sudo apt-get install tcl-dev tk-dev python-tk python3-tk

成功了!

答案 23 :(得分:0)

在Pycharm中,有时Matplotlib.plot不会显示。

因此,在调用plt.show()之后,请在右侧工具栏中检查SciView。在SciView内部,将存储每个生成的图。

答案 24 :(得分:0)

当我尝试绘制直方图时,我遇到了上面的错误,而下面的点对我有用。

操作系统:Mac Catalina 10.15.5

Pycharm版本:社区版本2019.2.3

Python版本:3.7

  1. 我将导入语句更改如下(从-到)

来自:

import matplotlib.pylab as plt

收件人:

import matplotlib.pyplot as plt

  1. 并将以下内容的图语句(将我的命令表pyplot更改为plt)

来自:

plt.pyplot.hist(df["horsepower"])

# set x/y labels and plot title
plt.pyplot.xlabel("horsepower")
plt.pyplot.ylabel("count")
plt.pyplot.title("horsepower bins") 

至:

plt.hist(df["horsepower"])

# set x/y labels and plot title
plt.xlabel("horsepower")
plt.ylabel("count")
plt.title("horsepower bins")
  1. 使用plt.show显示直方图

plt.show()