魅惑术没有情节

魅力没有显示以下代码的情节:

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 (使用相同的解释器) ,该图如预期的那样显示。

所以问题一定出在魅惑咒上。 我试过同时使用 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)]'}
272471 次浏览

我也有同样的问题。检查 plt.isinteractive()是否为真。设置为“假”对我有帮助。

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

我知道这很旧了,但我想我可以为其他旅行者澄清一个误解。将 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.interactive(False)True和返回。

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

这将闪现我的情节。然后设置为 False允许观看。

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

正如所注意到的,我的程序不会退出,直到所有的窗口都关闭。下面是我当前运行环境的一些细节:

Python version 2.7.6
Anaconda 1.9.2 (x86_64)
(default, Jan 10 2014, 11:23:15)
[GCC 4.0.1 (Apple Inc. build 5493)]
Pandas version: 0.13.1

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

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

一个数字屏幕会弹出,但没有图表出现。 使用:

plt.show(block=True)

正确显示图形。

我的问题是 matplotlib 使用了错误的后端,我使用的是 Debian Jessie。

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

import matplotlib
matplotlib.get_backend()

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

解决办法很简单:

  1. 通过 pip 卸载 matplotlib
  2. 安装适当的库: sudo apt-get Install tcl-dev tk-dev python-tk python3-tk
  3. 再次通过 pip 安装 matplotlib。

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

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

按照这里的解决方案组合,我的解决方案是在前面添加以下命令:

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

与以下两个进口

   import matplotlib
import matplotlib.pyplot as plt

在我的例子中,似乎所有的命令都是必需的,使用带有 ElCapitan 和 PyCharm 2016.2.3的 MBP!

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

对于初学者,您可能还需要确保自己是 在控制台中运行脚本,而不是常规的 Python 代码。这是相当容易的 突出显示一段代码并运行它

import matplotlib
matplotlib.use('TkAgg')

我没问题

打完电话后不久

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)

用就是了

import matplotlib.pyplot as plt
plt.show()

这个命令告诉系统在 Pycharm 绘制情节。

例如:

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

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

我的环境: macOS & anaconda3

这对我有用:

matplotlib.use('macosx')

或互动模式:

matplotlib.use('TkAgg')

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

只要加上 plt.pyplot.show()就可以了。

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

以上这些对我来说都不管用,但下面这些对我管用:

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

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

    sudo apt-get install python3-pyqt5
    

注意,对于某些人来说,仅仅迈出第一步就足够了,而且是有效的。

一个属性需要设置为 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()

将导入更改为:

import matplotlib.pyplot as plt

或使用这句话:

plt.pyplot.show()

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

plt.imshow(img)
plt.waitforbuttonpress()

它显示该图并等待用户单击新窗口。只有这样,它才能恢复脚本并运行剩余的代码。

我正在使用 Ubuntu,我试着像@Arie 上面所说的那样,但是只在终端中使用这一行:

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

成功了!

在 Pycharm,有时候 Matplotlib.plot 不会出现。

因此,在调用 plt.show()之后,请检查 SciView 的右侧工具栏。

我有这个问题,我可以解决它,你可以测试我的方式. 。 禁用设置—— > tools —— > python Scientific 中的“ show plot in tool window”

当我试图绘制直方图时,我正面临上面的错误,下面的几点对我很有用。

OS: Mac Catalina 10.15.5

Pycharm 版本: 社区版本2019.2.3

Python 版本: 3.7

  1. 我将 import 语句修改如下(从-to)

来自:

import matplotlib.pylab as plt

致:

import matplotlib.pyplot as plt

  1. 并将 plot 语句设置为以下(将命令形式 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()