【问题标题】:error with IPython in showing plots with pyqtgraphIPython 在使用 pyqtgraph 显示绘图时出错
【发布时间】:2016-11-15 04:41:38
【问题描述】:

我已经在 python 2.7 中成功安装了pyqtgraph 库。我从 GitHub 分叉了最新项目,然后是 python setup.py install。我现在正试图用它来展示情节。我打开一个 python 终端并开始输入以下内容:-

import pyqtgraph as pg
import numpy as np
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)

所有这些命令都已成功解释。 但随后我运行命令将情节视为:-

pg.plot(x, y, symbol='o')

它输出:

<pyqtgraph.graphicsWindows.PlotWindow at 0x6b7f708>

然后标题为pythonw 的窗口打开并显示“未响应”并挂起,我看不到任何输出。经过长时间的窗口崩溃和终端说:

Kernel died, restarting

可能是什么错误?我应该使用 .exe 安装吗?

编辑: 正如titusjan 在下面指出的那样,问题在于默认的 Jupyter/Ipython 笔记本随 Anaconda 一起提供,我无法纠正。一定是安装有问题。我正在 Windows 上工作。

【问题讨论】:

  • IPython 内核似乎崩溃了。如果在常规 Python 提示符中输入语句会发生什么?
  • @titusjan 正如你所说,我实际上现在在常规 python 提示符下运行,它有效!我不明白为什么?你能告诉我为什么 IPython 崩溃了,我能做些什么来解决这个问题?我在 Windows 64 位上使用 Anaconda 4.1.1。我想让我的 IPython 启动并运行。
  • 恐怕我不知道;我对 IPython 了解不多。我在这篇文章中添加了 IPython 标签,以便 IPython 专家可以看到它。如果您编辑它以包含您使用的 IPython 版本,这可能是一个好主意。
  • 我使用的是 Anaconda 4.1.1 默认附带的默认 Jupyter 笔记本,我使用的是 Python 2.7。

标签: python-2.7 ipython anaconda jupyter pyqtgraph


【解决方案1】:

pyqtgraph 基于 PyQT 基于 GUI 的编程绘制函数。因此,必须将显示绘图的任务视为启动 GUI。如上所述,当我将命令提供给 IPython 终端时,它运行良好:

import numpy as np
import pyqtgraph as pg
import sys

x = np.random.normal(size=1000)
y = np.random.normal(size=1000)

如上所述,当我喂线时问题就开始了:

pg.plot(x, y, symbol='o')

要解决这个问题:要么一次性输入这两行

pg.plot(x, y, symbol='o')
pg.QtGui.QApplication.exec_()

或紧跟在上一行pg.plot(x, y, symbol='o')之后输入这一行:

pg.QtGui.QApplication.exec_()

我们也可以使用默认的 QT-GUI 命令。因此,即使我们运行此代码,我们也会得到正确的绘图:-

import numpy as np
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui 
import sys

x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
pg.plot(x, y, symbol='o')
if sys.flags.interactive != 1 or not hasattr(QtCore, 'PYQT_VERSION'):
    QtGui.QApplication.instance().exec_()

但是,如果想避免显式调用 QTGui 方法,假设已将以下代码保存为 xyz.py,则可以通过在命令行上写入:pythonw -i xyz.py 来运行代码成功显示图形。这确保了 python 已被明确要求以交互模式运行。 pythonw 用于在 windows 中运行。

import numpy as np
import pyqtgraph as pg

x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
pg.plot(x, y, symbol='o')

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 2019-03-27
    • 2018-03-05
    • 1970-01-01
    • 2019-02-02
    • 2017-12-16
    • 2023-04-06
    • 2015-06-03
    • 2017-05-31
    相关资源
    最近更新 更多