使用pyqtgraph模块进行PyQt绘图(1)

pyqtgraph模块简介

测试环境

numpy == 1.16.3
PyQt5 == 5.11.3
pyqtgraph == 0.10.0
模块文档和API参考:http://www.pyqtgraph.org/documentation/

模块简介

pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架,因此它在大数据量的处理及快速显示方面有着天然的优势,非常适合于需要快速绘图更新、视频或实时交互性的操作场合,在数学、科学和工程领域都有着广泛的应用。
https://baijiahao.baidu.com/s?id=1613655816059670784&wfr=spider&for=pc)

pyqtgraph的主要目的:

1)提供快速、可交互的绘图,用于显示数据(图表、视频等等)
2)提供有助于快速程序开发的工具(例如,像在Qt Designer中使用的 property trees

pyqtgraph 重度使用 Qt GUI平台(通过PyQt 或者 PySide)和 numpy,前者用于高性能绘图,后者用于大体量数据处理。

pyqtgraph使用Qt的GraphicsView框架,这是一个高性能的框架。

Linux,Windows和OSX平台都可以使用。

pyqtgraph的核心特点

  1. 基础绘图:图片,折线图,散点图
  2. 足够快的实时刷新图(视频数据或图片数据)
  3. 交互性的缩放平移,平均,FFT,SVG/PNG格式图片导出
  4. 用于标记或者选择绘图区域的小工具
  5. 用于标记或选择干性图的图形区域,并且自动分割多维图片数据的小工具
  6. 创建自定义的感兴趣的图片区域的框架
  7. 替代/补充 Qt的停靠系统,允许更复杂的停靠布置
  8. 用于动态接口的快速原型设计ParameterTree(参数树)小工具(与Qt Designer以及其他应用程序的property trees类似)

PyQtGraph示例

PyQtGraph自带很多示例,打开方式:

    import pyqtgraph.examples
    pyqtgraph.examples.run()

运行以后会出现以下界面
PyQtGraph实例
左侧为不同实例的列表,右侧是python源码
例如,在左侧列表中选择 Basic Plotting,单击左下角 Run Example按钮(或者直接双击列表中的条目),会出现下图所示的组合图表
pyqtgraph绘图示例

与其他绘图库相比较

matplotlib
在绘图方面,pyqtgraph不如matplotlib成熟,但绘图速度远胜于matplotlib;
matplotlib主要目的是用来制作出版质量的图标,而pyatgraph的目的是制作数据获取和分析程序;
matplotlib更符合matlab程序员的习惯,pyqtpraph则更符合python和qt程序员的习惯。
matplotlib不包含但pyqtgraph包含的一些特性有,图像交互,容积成像,参数树,流程图等等

pyqwt5(没接触过也没啥兴趣,懒得翻译了)
About as fast as pyqwt5, but not quite as complete for plotting functionality. Image handling in pyqtgraph is much more complete (again, no ROI widgets in qwt). Also, pyqtgraph is written in pure python, so it is more portable than pyqwt, which often lags behind pyqt in development (I originally used pyqwt, but decided it was too much trouble to rely on it as a dependency in my projects). Like matplotlib, pyqwt (to my knowledge) does not include many of pyqtgraph’s features such as image interaction, volumetric rendering, parameter trees, flowcharts, etc.

鼠标交互方式

2D图形

  • 左键:选择或移动对象
  • 右键拖拽:缩放,向上放大y轴,向下缩小y轴,向左缩小x轴,向右放大x轴
  • 右键单击:显示操作菜单
  • 中键(滚轮)拖拽:平移
  • 滚轮滚动:同时缩放x和y轴

左键拖拽有两种效果:
1-平移
2-绘制一个方框,松开左键后,将方框内的图形元素放大至整个坐标轴区域

默认为第1种模式:
切换至第2种模式有两种方式:
第一是使用下面的命令

    pyqtgraph.setConfigOption('leftButtonPan', False)

第二种是右键单击,选择Mouse Mode,切换至1 button模式

右键菜单
单击右键的菜单内容:

  • 使能或禁用数据变化时的自动缩放
  • 多幅图坐标轴关联
  • 使能或禁能单轴鼠标交互
  • 显式设置显示区域值

3D图形(暂时用不上,不想翻了)
3D visualizations use the following mouse interaction:

Left button drag: Rotates the scene around a central point
Middle button drag: Pan the scene by moving the central “look-at” point within the x-y plane
Middle button drag + CTRL: Pan the scene by moving the central “look-at” point along the z axis
Wheel spin: zoom in/out
Wheel + CTRL: change field-of-view angle
And keyboard controls:

Arrow keys rotate around central point, just like dragging the left mouse button

如何使用pyqtgraph

关于使用方式的几种建议:

  • 在交互环境中使用(例如ipython)
  • 从应用中显示弹出式窗口
  • 作为窗体嵌入PyQt程序中

我的目的是第三种,后面研究的环境是第三种

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pyqtgraph是一个用于在Python创建交互式图形的库,它可以轻松地嵌入到PyQt5应用程序。要在PyQt5使用pyqtgraph,首先需要安装pyqtgraphPyQt5库。然后,您可以使用pyqtgraph提供的类和函数在PyQt5应用程序创建图形。 示例代码如下: ```python import pyqtgraph as pg from PyQt5.QtWidgets import QApplication, QMainWindow app = QApplication([]) win = QMainWindow() win.resize(800, 600) # create a plot widget in the main window plot_widget = pg.PlotWidget() win.setCentralWidget(plot_widget) # plot some data x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plot_widget.plot(x, y) win.show() app.exec_() ``` 这是一个在PyQt5主窗口创建pyqtgraph绘图部件的简单示例。在这里,我们使用pyqtgraph的`plot`函数绘制了一些数据。更多用法请参考pyqtgraph的文档。 ### 回答2: PyQtGraph是一个基于PyQt和Numpy的绘图库,可以用于绘制各种类型的图形。PyQtGraph的优点是速度快、易于使用、可扩展性好。 在PyQt5使用PyQtGraph可以通过嵌入QWidget或QtQuick View来实现。以下是通过嵌入QWidget实现在PyQt5使用PyQtGraph的步骤: 1. 安装PyQtGraph 可以通过pip安装PyQtGraph库,命令行输入"pip install pyqtgraph" 2. 新建PyQt5窗口 使用QMainWindow或其他QWidget类型新建一个窗口。 3. 在窗口添加QWidget部件 使用QWidget将PyQtGraph嵌入到窗口,可以使用以下代码: ```python import pyqtgraph as pg from PyQt5.QtWidgets import QWidget, QVBoxLayout class GraphWidget(QWidget): def __init__(self): super().__init__() self.layout = QVBoxLayout(self) self.graph = pg.PlotWidget() self.layout.addWidget(self.graph) ``` 4. 绘制图形 使用PyQtGraph的函数绘制所需的图形,例如: ```python self.graph.plot([1, 2, 3, 4], [1, 4, 9, 16], pen='r') ``` 5. 显示窗口 最后使用PyQt5的QApplication和show()函数来显示窗口: ```python from PyQt5.QtWidgets import QApplication if __name__ == '__main__': app = QApplication([]) win = GraphWidget() win.show() app.exec_() ``` 通过以上步骤可以嵌入PyQtGraphPyQt5窗口进行绘图。其他类型的图形和使用PyQtGraph的更高级功能可以参考PyQtGraph的官方文档。 ### 回答3: pyqtgraph是一个基于PyQt5的科学绘图库,其优点在于速度快、使用方便、具有交互性和多种细节级别的支持。pyqtgraph不仅可以独立使用,还可以与PyQt5一起使用。嵌入PyQt5的步骤如下: 1. 安装pyqtgraph 可以使用pip工具在命令行输入以下命令进行安装: ``` pip install pyqtgraph ``` 2. 导入必要的库 PyQt5需要使用QtWidgets进行GUI编程,因此需要导入PyQt5.QtWidgets和QtGui库,同时也需要导入pyqtgraph库。 ``` from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QWidget, QVBoxLayout from PyQt5.QtGui import QIcon import pyqtgraph as pg ``` 3. 创建绘图空间和窗口 我们需要在PyQt5窗口创建QtGui.QWidget和QtGui.QVBoxLayout空间来容纳pyqtgraph,并设置它们的大小和布局。接着,需要使用pg.PlotWidget()创建绘图窗口并添加到我们刚创建的QWidget。 ``` class MainWindow(QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.central_widget = QWidget() self.setCentralWidget(self.central_widget) layout = QVBoxLayout(self.central_widget) self.plot = pg.PlotWidget() layout.addWidget(self.plot) ``` 4. 创建绘图数据 为了绘制pyqtgraph,需要创建数据并添加到pyqtgraph,我们可以使用setData()方法进行添加。 ``` data = [1, 3, 2, 4, 6, 5, 7, 9, 8, 10] self.plot.plot(data) ``` 5. 运行程序 最后,要在主函数创建 QApplication 并显示应用程序窗口。 ``` if __name__ == '__main__': app = QApplication(sys.argv) main_window = MainWindow() main_window.show() sys.exit(app.exec_()) ``` 以上是pyqtgraphPyQt5的简单嵌入过程,可根据需求进行修改,以满足绘图需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值