📅  最后修改于: 2023-12-03 15:04:34.044000             🧑  作者: Mango
PyQtGraph是一个用于科学计算的Python图形库,基于 PyQt 和 NumPy 实现。它支持多种操作系统平台(包括Windows、Linux、MacOS),具有高性能和可伸缩性。
PyQtGraph功能强大,可以绘制2D和3D图形,处理大型数据集,支持实时数据流可视化和复杂的用户交互。 它还提供了一些有用的工具,如线性和非线性的拟合、求偏导数等。
在安装PyQtGraph之前,需要先安装以下依赖项:
可以通过 python -m pip install pyqtgraph
命令来安装 PyQtGraph。
安装PyQtGraph之前,需要先安装以下依赖项:
- PyQt5: 提供GUI框架和图形UI组件
- NumPy: 为图形数据提供高效的数学和计算支持
可以通过 `python -m pip install pyqtgraph` 命令来安装 PyQtGraph。
绘图是PyQtGraph的主要功能之一。 它提供了多种不同类型的图表,包括散点图、线图、柱状图、等高线图和3D图形。
import pyqtgraph as pg
import numpy as np
# 创建绘图窗口
win = pg.plot(title='Line Plot')
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 绘制线图
win.plot(x, y)
# 显示窗口
pg.QtGui.QApplication.exec_()
import pyqtgraph as pg
import numpy as np
# 创建绘图窗口
win = pg.plot(title='Line Plot')
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 绘制线图
win.plot(x, y)
# 显示窗口
pg.QtGui.QApplication.exec_()
PyQtGraph支持多种2D图表类型,包括散点图、线图、柱状图、等高线图和区域图。 下面是绘制散点图和线性拟合曲线的示例代码。
import pyqtgraph as pg
import numpy as np
# 创建绘图窗口
win = pg.plot(title='Scatter Plot')
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.normal(size=100) * 0.1
# 绘制散点图
win.plot(x, y, pen=None, symbol='o', symbolPen=None, symbolBrush='r')
# 线性拟合
coeff = np.polyfit(x, y, 1)
poly = np.poly1d(coeff)
# 绘制拟合曲线
win.plot(x, poly(x), pen='r')
# 显示窗口
pg.QtGui.QApplication.exec_()
import pyqtgraph as pg
import numpy as np
# 创建绘图窗口
win = pg.plot(title='Scatter Plot')
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.normal(size=100) * 0.1
# 绘制散点图
win.plot(x, y, pen=None, symbol='o', symbolPen=None, symbolBrush='r')
# 线性拟合
coeff = np.polyfit(x, y, 1)
poly = np.poly1d(coeff)
# 绘制拟合曲线
win.plot(x, poly(x), pen='r')
# 显示窗口
pg.QtGui.QApplication.exec_()
PyQtGraph还支持3D绘图。 下面是绘制3D scatter图的示例代码。
import pyqtgraph.opengl as gl
import numpy as np
# 创建绘图窗口
app = pg.mkQApp()
view = gl.GLViewWidget()
view.show()
# 生成数据
n = 100
pos = np.random.normal(size=(n, 3), scale=0.2)
size = np.random.normal(size=n, scale=0.2)
# 绘制3D Scatters
sp = gl.GLScatterPlotItem(pos=pos, size=size, color=(1, 1, 1, 1), pxMode=False)
view.addItem(sp)
# 设置坐标轴范围
view.setCameraPosition(distance=20)
# 启动事件循环
app.exec_()
import pyqtgraph.opengl as gl
import numpy as np
# 创建绘图窗口
app = pg.mkQApp()
view = gl.GLViewWidget()
view.show()
# 生成数据
n = 100
pos = np.random.normal(size=(n, 3), scale=0.2)
size = np.random.normal(size=n, scale=0.2)
# 绘制3D Scatters
sp = gl.GLScatterPlotItem(pos=pos, size=size, color=(1, 1, 1, 1), pxMode=False)
view.addItem(sp)
# 设置坐标轴范围
view.setCameraPosition(distance=20)
# 启动事件循环
app.exec_()
PyQtGraph提供了一个功能强大的科学计算图形库,支持众多图形类型和数学计算,同时具有高性能和可伸缩性。 开发人员可以使用PyQtGraph来构建复杂的可视化和交互式应用程序。