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

时间:2017-04-15 10:33:05

标签: ipython pyqtgraph

输入

pg.QtGui.QApplication.exec_()

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

[可以通过键入public class Item implements Parcelable{ private String name; private String body; private String profileImage; public Item(){ } public Item(Parcel in) { name = in.readString(); body = in.readString(); profileImage = in.readString(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeString(body); dest.writeString(profileImage); } @SuppressWarnings("unused") public static final Parcelable.Creator<Item> CREATOR = new Parcelable.Creator<Item>() { @Override public Item createFromParcel(Parcel in) { return new Item(in); } @Override public Item[] newArray(int size) { return new Item[size]; } }; public Item(String body,String name,String profileImage){ this.body = body; this.name = name; this.profileImage = profileImage; } 使窗口显示,但然后阻止REPL。

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

这两者都非常令人不满意。]

如何使用基本的交互式pyqtgraph绘图来使用IPython REPL?

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

2 个答案:

答案 0 :(得分:1)

由于@titusjan的消息,解决方案是输入

%gui qt
在发布任何pyqtgraph(或一般的PyQt)命令之前,

(或该主题的一些变体:查看%gui?中可用的其他选项)在IPython 中。

答案 1 :(得分:0)

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

您将获得一个类似的弹出窗口 Simple PyQtGraph