千家信息网

Python3.x+pyqtgraph实皇冠现体育网站开发数据可视化

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,1、pyqtgraph库数据皇冠体育网站开发 haozbbs.com Q1446595067可视化效果还不错,特别是窗体程序中图像交互性较好;安装也很方便,用 pip 安装。2、在Python中新建一
千家信息网最后更新 2025年01月31日Python3.x+pyqtgraph实皇冠现体育网站开发数据可视化

1、pyqtgraph库数据皇冠体育网站开发 haozbbs.com Q1446595067可视化效果还不错,特别是窗体程序中图像交互性较好;安装也很方便,用 pip 安装。

2、在Python中新建一个 .py 文件,然后写入如下代码并执行可以得到官方提供的很多案例(含代码),出现如下界面图像:

import pyqtgraph.examplespyqtgraph.examples.run()

图1

图2

图3

4、程序默认是黑色背景,这个是可以修改的。比如,在程序的开头部分写入如下代码就可以修改背景:

pg.setConfigOption('background', 'w')pg.setConfigOption('foreground', 'k')

更多说明,见 pyqtgraph 官网:http://www.pyqtgraph.org/documentation/style.html,"Line, Fill, and Color"部分的"Default Background and Foreground Colors"部分。

5、一个修改背景颜色的完整案例如下,可以直接运行程序:

import numpy as npimport pyqtgraph as pgfrom pyqtgraph.Qt import QtGui, QtCore# 如下2行代码是我自己加入的,目的是修改默认的黑色背景为其它颜色背景pg.setConfigOption('background', 'w')pg.setConfigOption('foreground', 'k')from pyqtgraph.Point import Point#generate layoutapp = QtGui.QApplication([])win = pg.GraphicsWindow()win.setWindowTitle('pyqtgraph example: crosshair')label = pg.LabelItem(justify='right')win.addItem(label)p1 = win.addPlot(row=1, col=0)p2 = win.addPlot(row=2, col=0)region = pg.LinearRegionItem()region.setZValue(10)# Add the LinearRegionItem to the ViewBox, but tell the ViewBox to exclude this# item when doing auto-range calculations.p2.addItem(region, ignoreBounds=True)#pg.dbg()p1.setAutoVisible(y=True)#create numpy arrays#make the numbers large to show that the xrange shows data from 10000 to all the way 0data1 = 10000 + 15000 * pg.gaussianFilter(np.random.random(size=10000), 10) + 3000 * np.random.random(size=10000)data2 = 15000 + 15000 * pg.gaussianFilter(np.random.random(size=10000), 10) + 3000 * np.random.random(size=10000)p1.plot(data1, pen="r")p1.plot(data2, pen="g")p2.plot(data1, pen="w")def update():    region.setZValue(10)    minX, maxX = region.getRegion()    p1.setXRange(minX, maxX, padding=0)region.sigRegionChanged.connect(update)def updateRegion(window, viewRange):    rgn = viewRange[0]    region.setRegion(rgn)p1.sigRangeChanged.connect(updateRegion)region.setRegion([1000, 2000])#cross hairvLine = pg.InfiniteLine(angle=90, movable=False)hLine = pg.InfiniteLine(angle=0, movable=False)p1.addItem(vLine, ignoreBounds=True)p1.addItem(hLine, ignoreBounds=True)vb = p1.vbdef mouseMoved(evt):    pos = evt[0]  ## using signal proxy turns original arguments into a tuple    if p1.sceneBoundingRect().contains(pos):        mousePoint = vb.mapSceneToView(pos)        index = int(mousePoint.x())        if index > 0 and index < len(data1):            label.setText("x=%0.1f,   y1=%0.1f,   y2=%0.1f" % (mousePoint.x(), data1[index], data2[index]))        vLine.setPos(mousePoint.x())        hLine.setPos(mousePoint.y())proxy = pg.SignalProxy(p1.scene().sigMouseMoved, rateLimit=60, slot=mouseMoved)#p1.scene().sigMouseMoved.connect(mouseMoved)## Start Qt event loop unless running in interactive mode or using pyside.if __name__ == '__main__':    import sys    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):        QtGui.QApplication.instance().exec_()
0