IPython 在使用 pyqtgraph 显示绘图时出错

error with IPython in showing plots with pyqtgraph

我已经在 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 的 windows 打开并显示 'not responding' 并挂起,我看不到任何输出。长时间 window 崩溃后,终端显示:

Kernel died, restarting

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

编辑: 正如 titusjan 在下面指出的那样,问题出在 Anaconda 附带的默认 Jupyter/Ipython 笔记本上,我无法更正。肯定有一些安装问题。我正在研究 Windows。

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 用于 运行ning 在 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')