创建视图框pg.ViewBox()
创建视图 pg.GraphicsView()
创建图形布局pg.GraphicsLayout()
来实现。
代码有详细注释:
import pyqtgraph as pg
app = pg.QtGui.QApplication([])
a2 = pg.AxisItem("right")
a3 = pg.AxisItem("right")
a4 = pg.AxisItem("right")
a5 = pg.AxisItem("left")
a6 = pg.AxisItem("left")
v2 = pg.ViewBox()
v3 = pg.ViewBox()
v4 = pg.ViewBox()
v5 = pg.ViewBox()
v6 = pg.ViewBox()
pw = pg.GraphicsView()
pw.setWindowTitle('pyqtgraph 标题')
pw.show()
l = pg.GraphicsLayout()
pw.setCentralWidget(l)
l.addItem(a2, row = 2, col = 5, rowspan=1, colspan=1)
l.addItem(a3, row = 2, col = 4, rowspan=1, colspan=1)
l.addItem(a4, row = 2, col = 6, rowspan=1, colspan=1)
l.addItem(a5, row = 2, col = 2, rowspan=1, colspan=1)
l.addItem(a6, row = 2, col = 1, rowspan=1, colspan=1)
pI = pg.PlotItem()
v1 = pI.vb
l.addItem(pI, row = 2, col = 3, rowspan=1, colspan=1)
l.scene().addItem(v2)
l.scene().addItem(v3)
l.scene().addItem(v4)
l.scene().addItem(v5)
l.scene().addItem(v6)
a2.linkToView(v2)
a3.linkToView(v3)
a4.linkToView(v4)
a5.linkToView(v5)
a6.linkToView(v6)
v2.setXLink(v1)
v3.setXLink(v2)
v4.setXLink(v3)
v5.setXLink(v4)
v6.setXLink(v5)
pI.getAxis("left").setLabel('axis 1 in ViewBox of PlotItem', color='#FFFFFF')
a2.setLabel('axis 2 in Viewbox 2', color='#2E2EFE')
a3.setLabel('axis 3 in Viewbox 3', color='#2EFEF7')
a4.setLabel('axis 4 in Viewbox 4', color='#2EFE2E')
a5.setLabel('axis 5 in Viewbox 5', color='#FFFF00')
a6.setLabel('axis 6 in Viewbox 6', color='#FE2E64')
def updateViews():
v2.setGeometry(v1.sceneBoundingRect())
v3.setGeometry(v1.sceneBoundingRect())
v4.setGeometry(v1.sceneBoundingRect())
v5.setGeometry(v1.sceneBoundingRect())
v6.setGeometry(v1.sceneBoundingRect())
x = [1,2,3,4,5,6]
y1 = [0,4,6,8,10,4]
y2 = [0,5,7,9,11,3]
y3 = [0,1,2,3,4,12]
y4 = [0,8,0.3,0.4,2,5]
y5 = [0,1,6,4,2,1]
y6 = [0,0.2,0.3,0.4,0.5,0.6]
v1.addItem(pg.PlotCurveItem(x, y1, pen='#FFFFFF'))
v2.addItem(pg.PlotCurveItem(x, y2, pen='#2E2EFE'))
v3.addItem(pg.PlotCurveItem(x, y3, pen='#2EFEF7'))
v4.addItem(pg.PlotCurveItem(x, y4, pen='#2EFE2E'))
v5.addItem(pg.PlotCurveItem(x, y5, pen='#FFFF00'))
v6.addItem(pg.PlotCurveItem(x, y6, pen='#FE2E64'))
v1.sigResized.connect(updateViews)
v2.enableAutoRange(axis= pg.ViewBox.XYAxes, enable=True)
v3.enableAutoRange(axis= pg.ViewBox.XYAxes, enable=True)
v4.enableAutoRange(axis= pg.ViewBox.XYAxes, enable=True)
v5.enableAutoRange(axis= pg.ViewBox.XYAxes, enable=True)
v6.enableAutoRange(axis= pg.ViewBox.XYAxes, enable=True)
updateViews()
app.exec_()
由于刚接触pyqtgraph,而且官方文档实在简陋,导致一时间没有思路,各种百度,当然其实mdf解析包asmmdf的gui已经实现了这个功能,再不济还可以参考下它的实现,但是本着学知识的态度,我还是没有一开始就看它的源码,还是想自己百度解决,虽然这样也是,但是一个一个知识点百度,一个一个问题解决,这样可能会学到更多东西,于是就开始了学习之旅。这个技术点我搜到了几篇文章,但最有帮助的要数云淡风轻博主的博客了,链接。当然到现在还没结束,下一步是实现移动线,根据线的位置,显示各个图的值,今天放假,下周见。
pyqtgraph是一个用于创建图形的python库。当在pyqtgraph中画多个Y轴时,默认的Y轴(Y1)与新增的Y轴(Y2)的坐标刻度可能不能对齐。这是因为pyqtgraph在默认情况下是根据数据的范围计算坐标刻度的,而新增的Y轴可能数据范围不一样,导致坐标刻度不对齐。
要解决这个问题,可以使用pyqtgraph的setYRange()方法手动设置坐标轴的范围,以便使默认的Y轴(Y1)和新增...
from PyQt5 import QtCore,QtWidgets
from PyQt5.QtCore import Qt
from typing import Any,Dict
import pyqtgraph as pg
pg.setConfigOption('background', 'w')
pg.setConfigOption('foreground..
通常在pyqtgraph中处理自定义轴字符串时,人们将子类化为AxisItem并使用他们想要显示的字符串覆盖tickStrings.Pyqtgraphs axisitem还有一个内置的setTicks,它允许你指定将要显示的刻度,这可以针对这样的简单问题而不是子类化AxisItem来完成.在x轴上使用自定义字符串绘图可以像这样完成.>创建一个带有x值的dict以及要在轴上显示的字符串.xdi...
引言pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的GraphicsView框架,因此,它在大数据量的数字处理和快速显示方面有着巨大的优势,它适合于需要快速绘图更新、视频或实时交互性的操作场合。另外,它不仅为各种数据提供了快速可交互式的图形显示,同时也提供了用于快速开发应用程序的各...
我正在使用Python和PyQt4开发一个应用程序,该应用程序针对深度绘制不同的参数.由于具有良好的动画速度功能,因此绘图包是PyQtGraph.由于我是针对深度绘制的,因此我想反转Y轴.我发现我可以modify the ViewBox class in the PyQtGraph’s documentation.因此,我从Python Site Packages文件夹修改了该类的代码.但是我希望...
pyqtgraph 使用了 qt 的图形视图框架(Graphics View Framework), 如 QtGui.QGraphicsView 和 QtGui.QGraphicsObject。基于GraphicsObject的item交互功能有限,基于 QGraphicsView 的item 交互功能丰富。了解pyqtgraph的类关系后,可以按需改造,自定义画图...
1. 类似Echart dataZoom用法
问题:LayOut可以设置占用的列数 不能占用行数
我想将下面的图占用一个行 上面的图占用四个行 形成4:1的效果,但是多次测试均无法搞定,希望能蹲到大佬
2.多Y轴封装
3.自定义X轴
问题: 自定义X轴后 X轴的缩放一直没有调试出来
4.一个页面多数个chart展示
5. 移动游标Item