如何让基本的交互式 pyqtgraph 图在 IPython REPL 或 Jupyter 控制台中工作?

How to get basic interactive pyqtgraph plot to work in IPython REPL or Jupyter console?

正在打字

import pyqtgraph as pg
pg.plot([1,2,3,2,3])

进入标准 Python REPL 打开一个包含数据图的 window。在 IPython REPL 或 Jupyter 控制台中输入完全相同的代码,不会打开 window.

[可以通过键入 pg.QtGui.QApplication.exec_() 使 window 出现,但随后 REPL 被阻止。

或者,当尝试退出 REPL 时会出现 window,并且需要确认。

这两个都非常不满意。]

如何使基本的交互式 pyqtgraph 绘图与 IPython REPL 一起工作?

[在 IPython 5.1.0 和 Jupyter 5.0.0 以及 Python 3.5 和 3.6 以及 PyQt4 和 PyQt5(无 PySide)中观察到了所描述的行为]

正如@titusjan 所说,解决方案是输入

%gui qt

(或该主题的一些变体:查看 %gui? 有哪些其他选项)在 IPython before 发布任何 pyqtgraph(或 PyQt in一般)命令。

我在 Jupyter Notebook 中遇到了 matplotlib 的问题。它不够快,我发现导航不足。我使用在这里找到的技巧让 pyqtgraph 开始工作。我的天啊!这是一个很棒的工具。您获得的导航和速度非常棒。

想在这里分享我的解决方案。

%gui qt5
from PyQt5.Qt import QApplication

# start qt event loop
_instance = QApplication.instance()
if not _instance:
    _instance = QApplication([])
app = _instance

import pyqtgraph as pg

# create and and set layout
view = pg.GraphicsView()   
view.setWindowTitle('Your title')
layout = pg.GraphicsLayout()
view.setCentralItem(layout)
view.show()

# Set white graph
pg.setConfigOptions(antialias=True)
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground', 'k')

# add subplots
p0 = layout.addPlot(0,0)
p0.addLegend()
p0.plot([1,2,3,4,5], pen='b', name='p0')

p1 = layout.addPlot(1,0)
p1.addLegend()
p1.plot([2,2,2,2,], pen='r', name='p1')

p2 = layout.addPlot(1,0)
p2.addLegend(offset=(50, 0))
p2.plot([-1,0,1,1,], pen='g', name='p1.1')
p2.hideAxis('left')
p2.showAxis('right')

你会得到一个像这样的弹出窗口 window