pyqtgraph提供了很多快捷的方法,所以可以从多个阶段和多种方式绘图。

一、绘制方法

1、pyqtgraph.plot()

通过创建plot window 来显示数据,直接画图并显示。

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

创建一个Plotwidget来显示。可以使用PyQt的QMainwindow或者QWidget。如果使用 QMainwindow ,设置 setCentralWidget 。如果使用 QWIdget ,还需要设置布局,在布局中加入Plotwidget。

  • QMainwindow -> setCentralWidget
  • QWidget -> layout(如QHBoxLayout) ->addWidget
import pyqtgraph as pg
from PyQt5.QtWidgets import QApplication,QMainWindow
app=QApplication([])
win=QMainWindow()plot=pg.PlotWidget()
plot.plot([1,4,3])win.setCentralWidget(plot)
win.show()app.exec()

PlotWidget方法签名:
pg.PlotWidget(parent=None, background='default', plotItem=None, **kargs)

3、使用PlotItem.plot()

使用PlotItem 并 添加到 GraphicView中显示。

import pyqtgraph as pg
from PyQt5.QtWidgets import QApplicationapp=QApplication([])plot = pg.PlotItem()
plot.plot([1,4,3])view = pg.GraphicsView()
view.setCentralWidget(plot)view.show()
app.exec_()

PlotItem()方法签名:
pg.PlotItem( parent=None, name=None, labels=None, title=None, viewBox=None, axisItems=None, enableMenu=True, **kargs, )

4、GraphicsLayout.addPlot()

在布局中添加图

import pyqtgraph as pg
from PyQt5.QtWidgets import QApplicationapp=QApplication([])layout = pg.GraphicsLayout()
plot = layout.addPlot()
plot.plot([1,4,3])view = pg.GraphicsView()
view.setCentralItem(layout)
view.show()app.exec_()

二、Plot通用参数

  • x : 可选,如果未指定,则将自动生成整数系列。

  • y: Y轴 数据。

  • pen :绘制绘图线时使用的笔,如’red’, ‘g’, ‘b’, (255,0,0) 或 设置为None 禁用。

  • symbol : 描述要用于每个点的符号形状的字符串。或者,这也可以是一系列字符串,每个点都有不同的符号。符号的取值:['o', 's', 't', 't1', 't2', 't3', 'd', '+', 'x', 'p', 'h', 'star', 'arrow_up', 'arrow_right', 'arrow_down', 'arrow_left', 'crosshair']
    -symbolPen 和symbolBrush: sybol 的画笔和画刷。
    -fillLevel: 填充到的具体y值,用于面积图等。
    symbol的示意图如下:

    该图在样例代码中,代码如下:

"""
This example shows all the scatter plot symbols available in pyqtgraph.These symbols are used to mark point locations for scatter plots and some line
plots, similar to "markers" in matplotlib and vispy.
"""import pyqtgraph as pgapp = pg.mkQApp("Symbols Examples")
win = pg.GraphicsLayoutWidget(show=True, title="Scatter Plot Symbols")
win.resize(1000,600)pg.setConfigOptions(antialias=True)plot = win.addPlot(title="Plotting with symbols")
plot.addLegend()
plot.plot([0, 1, 2, 3, 4], pen=(0,0,200), symbolBrush=(0,0,200), symbolPen='w', symbol='o', symbolSize=14, name="symbol='o'")
plot.plot([1, 2, 3, 4, 5], pen=(0,128,0), symbolBrush=(0,128,0), symbolPen='w', symbol='t', symbolSize=14, name="symbol='t'")
plot.plot([2, 3, 4, 5, 6], pen=(19,234,201), symbolBrush=(19,234,201), symbolPen='w', symbol='t1', symbolSize=14, name="symbol='t1'")
plot.plot([3, 4, 5, 6, 7], pen=(195,46,212), symbolBrush=(195,46,212), symbolPen='w', symbol='t2', symbolSize=14, name="symbol='t2'")
plot.plot([4, 5, 6, 7, 8], pen=(250,194,5), symbolBrush=(250,194,5), symbolPen='w', symbol='t3', symbolSize=14, name="symbol='t3'")
plot.plot([5, 6, 7, 8, 9], pen=(54,55,55), symbolBrush=(55,55,55), symbolPen='w', symbol='s', symbolSize=14, name="symbol='s'")
plot.plot([6, 7, 8, 9, 10], pen=(0,114,189), symbolBrush=(0,114,189), symbolPen='w', symbol='p', symbolSize=14, name="symbol='p'")
plot.plot([7, 8, 9, 10, 11], pen=(217,83,25), symbolBrush=(217,83,25), symbolPen='w', symbol='h', symbolSize=14, name="symbol='h'")
plot.plot([8, 9, 10, 11, 12], pen=(237,177,32), symbolBrush=(237,177,32), symbolPen='w', symbol='star', symbolSize=14, name="symbol='star'")
plot.plot([9, 10, 11, 12, 13], pen=(126,47,142), symbolBrush=(126,47,142), symbolPen='w', symbol='+', symbolSize=14, name="symbol='+'")
plot.plot([10, 11, 12, 13, 14], pen=(119,172,48), symbolBrush=(119,172,48), symbolPen='w', symbol='d', symbolSize=14, name="symbol='d'")
plot.plot([11, 12, 13, 14, 15], pen=(253, 216, 53), symbolBrush=(253, 216, 53), symbolPen='w', symbol='arrow_down', symbolSize=22, name="symbol='arrow_down'")
plot.plot([12, 13, 14, 15, 16], pen=(189, 189, 189), symbolBrush=(189, 189, 189), symbolPen='w', symbol='arrow_left', symbolSize=22, name="symbol='arrow_left'")
plot.plot([13, 14, 15, 16, 17], pen=(187, 26, 95), symbolBrush=(187, 26, 95), symbolPen='w', symbol='arrow_up', symbolSize=22, name="symbol='arrow_up'")
plot.plot([14, 15, 16, 17, 18], pen=(248, 187, 208), symbolBrush=(248, 187, 208), symbolPen='w', symbol='arrow_right', symbolSize=22, name="symbol='arrow_right'")
plot.setXRange(-2, 4)if __name__ == '__main__':pg.exec()

三、绘图类的组织

PyQtGraph在很大程度上基于Qt的GraphicsView框架,见官方文档。最重要的是:1)Qt GUI由QWidgets组成,2) QGraphicsView 用于显示复杂图形,3)QGraphicsItems定义QGraphicsView中显示的对象。
绘图类的组织有三个层次,分别是:
1、 数据类 (QGraphicsItem的子类)

  • PlotCurveItem : 折图图

  • ScatterPlotItem : 散点图

  • PlotDataItem :组合 PlotCurveItem 和 ScatterPlotItem。上面讨论的绘图函数创建此类型的对象。
    2、 容器类1(QGraphicsItem的子类,用于包含其他 QGraphicsItem 对象,但该容器又必须包含在GraphicsView 中显示)

  • PlotItem : 显示单图,且只能在 GraphicsView 中使用

  • GraphicsLayout: 用于显示多个PlotItem。

  • ViewBox :用户可以使用鼠标缩放/平移 ViewBox 的内容。通常,所有PlotData/PlotCurve/ScatterPlotItem都从 ViewBox 中显示。

AxisItem : 显示轴值、刻度和标签。最常与 PlotItem 一起使用。
3、容器类2(QWidget的子类;可以嵌入在PyQt GUI中)

  • PlotWidget : GraphicsView 的子类,其中显示了单个PlotItem。即封装了PlotItem,因此提供的大多数方法可参考PlotItem。

  • GraphicsLayoutWidget : 显示单个GraphicsLayout的 QWidget 子类。即提供了对Layout的一个封装。

也就是说,图形必须显示在GraphicsView中,pyqtgraph提供了两个封装好的GraphicsView,PlotWidget和GraphicLayoutWidget。沿着这两条主线,可以按如下顺序构造图形显示:

  • PlotDataItem -> ViewBox->PlotItem->PlotWidget。
  • PlotItem-> GraphicsLayout->GraphicsLayoutWidget
    如下图所示:

如图中所示,PlotDataItem被装载入ViewBox,ViewBoxp加上title, AxisItem,右键菜单等形成PlotItem,PlotItem可以被放入PlotWidget(用于单图),也可以放入GraphicsLayout(用于多图)。
而PlotItem已经含有viewbox, GraphicLayouWidget已经含有GraphicLayout的封装,所以可以省略相关的添加代码,示意代码如下:


import pyqtgraph as pg
app=pg.mkQApp()item=pg.PlotDataItem([1,2,4])#默认是线状图
plotitem=pg.PlotItem()
plotitem.addItem(item) #内部将item添加到了viewbox,等同于plotitem.vb.addItem(item)plotwidget=pg.PlotWidget()
plotwidget.setCentralItem(plotitem)
plotwidget.show()'''#也可以用如下的方式
widget=pg.GraphicsLayoutWidget()
widget.addItem(plotitem) #内部将item添加到了GraphicsLayout,等同于widget.ci.addItem(plotitem)
widget.show()
'''app.exec_()

pyqtgraph文档笔记(四)在 pyqtgraph 中绘图相关推荐

  1. pyqtgraph文档笔记(五)总结:几个类的理解( GraphicsView, GraphicsItem ,GraphicsObject, PlotWidget等)

    一.pyqtgraph 与qt pyqtgraph 使用了 qt 的图形视图框架(Graphics View Framework), 但文档并没有说明使用了哪些功能, 经初步探索,pyqtgraph与 ...

  2. pyqtgraph文档笔记(三)pyqtgraph嵌入到PyQt

    pyqtgraph可以单独运行,也可以嵌入到PyQt中交互.要嵌入到PyQt, 需要生成 pyqtgraph.PlotWidget,然后就可以像正常的Qt Widget 一样添加使用,如添加到layo ...

  3. HOOMD Blue 文档笔记

    HOOMD Blue文档笔记 基于hoomd 1.0.2 userdoc http://codeblue.umich.edu/hoomd-blue/doc/index.html 3. 快速开始 例程: ...

  4. 文档笔记----nodejs菜鸟教程

    <html><head><meta charset="utf-8"><title>文档笔记----nodejs菜鸟教程</ti ...

  5. Android 系统 (130)---ODM 开发用户常见需求文档(四)

    ODM 开发用户常见需求文档(四) 一:取消用户模式 (frameworks/) diff --git a/base/packages/SystemUI/res/layout/keyguard_sta ...

  6. Manim文档及源码笔记-CE文档-示例库3使用Manim绘图

    Manim文档及源码笔记-CE文档-示例库3使用Manim绘图 参考原文: Manim Community Edition Example Gallery 前言 笔记随想: 暂未发现官方中文版,自己实 ...

  7. Vue官网2文档笔记

    文章目录 $event $on Class 与 Style 绑定 对象语法 列表渲染 v-for 中使用对象 事件处理 事件修饰符 插槽 具名插槽 解构插槽 prop 动态组件&异步组件 访问 ...

  8. PPT转成Word文档的四种方法

    注: 实际使用中,方法四比较好使. 如果想要提取图片,可以先转换成pdf,再转换成word. 方法一:利用"大纲"视图       打开PPT演示文稿,单击"大纲&quo ...

  9. Markdown *.MD 文件 技术文档 在SDL Trados Studio中翻译

    Markdown *.MD 文件 技术文档 在SDL Trados Studio中翻译 Markdown 是一种最新主流的技术文档写作格式,广泛用于API编写,在技术领域十分流行,本篇文档也是在CSD ...

最新文章

  1. 记录一下python-opencv-ArUco-Apriltag
  2. 初学git:用git bash往github push代码
  3. Spring 详解(三):AOP 面向切面的编程
  4. 图解MyEclipse用DB Browser连接四种数据库
  5. Android9获取权限闪退,Android 9.0 关于ACTION_CALL无权限导致闪退的问题
  6. 通俗解释随机森林算法
  7. 基于物品的协同过滤推荐算法_《推荐系统实践》3.基于物品的协同过滤算法
  8. 基于Verilog的按键控制LED灯
  9. 可持久化汇总(讲解+题目)
  10. LeetCode--20. 有效的括号(栈,删除法)
  11. 【数码管/定时器/中断】一个定时器控制数码管显示
  12. [No00009E]几种常见的命名规则
  13. 腾讯美的入股的语音AI公司SoundHound,拿什么挑战谷歌亚马逊?
  14. IDEA插件: 一键自动部署jar到远程服务器 使用 Cloud Toolkit 来部署应用到腾讯云、阿里云服务器
  15. 2021世界互联网大会“全体会议”发言干货都在这篇了
  16. 从淘宝,天猫,1688,微店,京东,苏宁,淘特等其他平台一键复制商品到拼多多平台(批量上传宝贝详情接口教程)
  17. 全景图拍摄方式有哪些?全景图拍摄制作流程是什么?
  18. 医学影像处理科研训练
  19. C#,《数值算法:科学计算的艺术,Numerical Recipes: The Art of Scientific Computing》
  20. Kotlin-Android世界的一股清流-函数

热门文章

  1. 【转、精】带着镣铐的舞者
  2. finish()和onDestroy()的关系
  3. 反弹Shell具体实现
  4. 【学习笔记】| Java多线程基础
  5. 伤害世界怎么自建服务器,伤害世界Hurtworld服务器架设教程 创建方法
  6. python除法取整数部分_python3 除法去掉小数,保留整数的做法
  7. 安卓屏幕完美适配方案——独家秘笈
  8. 百度东施效颦 技术和理念相去甚远
  9. 腾讯AI全景图首次曝光,解密腾讯的真正基因
  10. SSH登陆警告问题known_hosts