本文共 5194 字,大约阅读时间需要 17 分钟。
PyQtGraph 库是一个功能强大且易于使用的图形库,能够帮助开发者在各种应用场景中高效地进行数据可视化。作为基于 PyQt/PySide 的高性能图形库,PyQtGraph 特别适用于需要快速绘图和实时数据更新的应用场景。无论是科学计算、工程还是数据分析,它都能通过支持交互式操作和丰富的图形类型,成为开发者的得力助手。
PyQtGraph 可通过 pip 直接安装:
pip install pyqtgraph
此外,PyQtGraph 还依赖于 PyQt 或 PySide 中的一种,可以选择安装:
pip install pyqt5# 或 pip install pyside2
安装完成后,可以通过以下命令确认是否安装成功:
import pyqtgraph as pgprint(pg.__version__)
PyQtGraph 具备以下特点:
可以通过以下代码创建一个简单的折线图:
import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Basic Plot Example")plot = win.addPlot(title="折线图示例")x = [1, 2, 3, 4, 5]y = [10, 20, 30, 40, 50]plot.plot(x, y, pen=pg.mkPen(color='b', width=2))QtGui.QApplication.instance().exec_()
可以创建一个交互式散点图,并支持缩放和平移操作:
import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Scatter Plot Example")plot = win.addPlot(title="散点图示例")x = np.random.normal(size=100)y = np.random.normal(size=100)plot.plot(x, y, pen=None, symbol='o', symbolPen=None, symbolSize=10, symbolBrush=(255, 0, 0, 150))QtGui.QApplication.instance().exec_()
可以创建一个实时更新的图表,用于显示实时数据:
import pyqtgraph as pgfrom pyqtgraph.Qt import QtGui, QtCoreimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Real-time Plot Example")plot = win.addPlot(title="实时更新图表示例")curve = plot.plot()data = np.random.normal(size=100)ptr = 0def update(): global data, ptr data[:-1] = data[1:] data[-1] = np.random.normal() curve.setData(data) ptr += 1timer = QtCore.QTimer()timer.timeout.connect(update)timer.start(50)QtGui.QApplication.instance().exec_()
可以使用 PyQtGraph 创建 3D 绘图:
import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport pyqtgraph.opengl as glimport numpy as npapp = QtGui.QApplication([])w = gl.GLViewWidget()w.show()w.setWindowTitle('3D Plot Example')g = gl.GLGridItem()w.addItem(g)pos = np.random.normal(size=(1000, 3))sp = gl.GLScatterPlotItem(pos=pos, color=(1, 1, 1, 1), size=0.1)w.addItem(sp)QtGui.QApplication.instance().exec_() 可以使用 PyQtGraph 显示图像,并进行交互操作:
import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Image Display Example")view = win.addViewBox()view.setAspectLocked(True)img = pg.ImageItem()view.addItem(img)data = np.random.normal(size=(100, 100))img.setImage(data)QtGui.QApplication.instance().exec_()
可以在一个窗口中创建多个图表,形成复杂的布局:
import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Multiple Plots Example")p1 = win.addPlot(title="Plot 1")p2 = win.addPlot(title="Plot 2")win.nextRow()p3 = win.addPlot(title="Plot 3")p4 = win.addPlot(title="Plot 4")x = [1, 2, 3, 4, 5]y = [10, 20, 30, 40, 50]p1.plot(x, y, pen=pg.mkPen(color='r', width=2))p2.plot(x, [i**2 for i in y], pen=pg.mkPen(color='g', width=2))p3.plot(x, [i**3 for i in y], pen=pg.mkPen(color='b', width=2))p4.plot(x, [np.log(i) for i in y], pen=pg.mkPen(color='y', width=2))QtGui.QApplication.instance().exec_()
在工业监控系统中,通过 PyQtGraph 实时显示传感器数据,进行状态监控和异常检测:
import pyqtgraph as pgfrom pyqtgraph.Qt import QtGui, QtCoreimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Data Monitoring System")plot = win.addPlot(title="实时传感器数据")curve = plot.plot()data = np.random.normal(size=100)ptr = 0def update(): global data, ptr data[:-1] = data[1:] data[-1] = np.random.normal() curve.setData(data) ptr += 1timer = QtCore.QTimer()timer.timeout.connect(update)timer.start(100)QtGui.QApplication.instance().exec_()
在科学研究中,通过 PyQtGraph 可视化实验数据,帮助研究人员分析和理解数据规律:
import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Scientific Research Visualization")plot = win.addPlot(title="实验数据可视化")x = np.linspace(0, 10, 1000)y = np.sin(x)curve = plot.plot()curve.setData(x, y, pen=pg.mkPen(color='b', width=2))QtGui.QApplication.instance().exec_()
在金融数据分析中,通过 PyQtGraph 显示股票价格和交易量等数据,辅助投资决策:
import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Financial Data Analysis")price_plot = win.addPlot(title="Stock Price")price_curve = price_plot.plot()volume_plot = win.addPlot(title="Trading Volume")volume_curve = volume_plot.plot()dates = np.arange(100)prices = np.cumsum(np.random.randn(100)) + 100volumes = np.random.randint(100, 1000, size=100)price_curve.setData(dates, prices, pen=pg.mkPen(color='g', width=2))volume_curve.setData(dates, volumes, pen=pg.mkPen(color='r', width=2))QtGui.QApplication.instance().exec_()
PyQtGraph 库是一个功能强大且易于使用的图形库,能够帮助开发者在各种应用场景中高效地进行数据可视化。通过支持高性能的实时绘图、丰富的图形类型和交互操作,PyQtGraph 提供了强大的功能和灵活的扩展能力。本文详细介绍了 PyQtGraph 库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握 PyQtGraph 库的使用,并在实际项目中发挥其优势。无论是在数据监控、科学研究还是金融数据分析中,PyQtGraph 库都将是一个得力的工具。
转载地址:http://rzofk.baihongyu.com/