数据实时监视器
该模块是一个用于在科学实验中实时绘制和分析数据的 PyQt6 控件。该控件集成了 pyqtgraph 库,用于高效地绘制和更新图表。
类:DataPlotterWidget
方法:__init__
功能:初始化 DataPlotterWidget
对象,设置属性和布局,启动定时器用于实时数据更新。
参数:
axis_name
:轴名称prop_root
:属性根路径datastream_names
:数据流名称列表n_yaxis
:Y轴数量parent
:父对象
主要步骤:
- 初始化属性和数据管理器 (
DataSummary
)。 - 创建并设置网格布局 (
QGridLayout
)。 - 调用
buildPlotWidget
方法创建绘图小部件。 - 调用
buildDataSelector
方法创建数据选择器。 - 启动定时器,每20毫秒调用
checkForNewData
方法检查新数据。
方法:buildPlotWidget
功能:创建并设置绘图窗口和右键菜单。
主要步骤:
- 创建
pyqtgraph
图形布局窗口 (GraphicsLayoutWidget
)。 - 在窗口中添加绘图项 (
PlotItem
)。 - 添加右键菜单选项,通过
QAction
类实现。
方法:buildDataSelector
功能:创建并设置数据选择器界面。
主要步骤:
- 创建数据选择器 (
DataSelectorItem
)。 - 创建 X轴选择器 (
XAxisWidget
) 和多个 Y轴选择器 (YAxisWidgetHelper
)。 - 设置网格布局 (
QGridLayout
) 来管理数据选择器控件的排列和显示。 - 隐藏配置界面,默认不显示。
方法:toggleConfig
功能:切换配置界面的显示和隐藏状态。
主要步骤:
- 根据
configVisible
变量的值显示或隐藏配置界面。 - 更新
configVisible
变量的值。
方法:setDataSource
功能:设置或更改数据源。
参数:text
- 数据源名称。
方法:checkForNewData
功能:检查是否有新数据,并更新图表。
主要步骤:
- 调用
recvData
方法从数据源接收数据。 - 如果有新数据,更新
lastUpdate
时间戳。 - 调用
updateDatasources
和update
方法更新数据源和图表。
方法:updateDatasources
功能:检查并更新数据源列表。
主要步骤:
- 创建一个新的数据源列表
sourcelist
。 - 如果数据源列表有变化,更新数据选择器中的数据源列表。
方法:update
功能:更新数据选择器中的可选数据字段,并更新图表。
主要步骤:
- 从当前数据集中选择所有代表浮点数或整数的键。
- 更新数据选择器中的可选键列表。
- 调用
_updatePlotData
方法更新图表。
方法:_updatePlotData
功能:更新图表数据。
主要步骤:
- 获取当前选中的 X轴字段。
- 调用每个 Y轴选择器的
updateData
方法更新数据。
方法:exportpdf
功能:导出图表为 PDF 文件。
主要步骤:
- 创建一个
matplotlib
图表对象。 - 调用每个 Y轴选择器的
plotmpl
方法将数据绘制到图表上。 - 保存图表为 PDF 文件并使用查看器打开。
方法:clear
功能:清除数据。
主要步骤:
- 调用数据管理器的
clear
方法清除数据。 - 移除所有图表项。
方法:plotData
功能:在图表中绘制数据。
参数:
x
:X轴数据y
:Y轴数据
主要步骤:
- 创建一个
pg.PlotDataItem
对象并设置绘图样式。 - 将数据添加到图表项中并绘制。
类:YAxisWidgetHelper
方法:__init__
功能:初始化 YAxisWidgetHelper
对象,设置属性和布局。
参数:
label
:标签plotter
:数据绘图器对象props
:属性对象plotitem
:绘图项对象parent
:父对象
主要步骤:
- 初始化 Y轴选择器,创建并设置布局和过滤器组合框。
- 创建并配置绘图项。
方法:updateYscale
功能:更新 Y轴缩放比例。
参数:text
- 缩放比例文本。
方法:createContextMenu
功能:创建上下文菜单。
参数:position
- 菜单位置。
主要步骤:
- 创建菜单项用于添加过滤、分箱和拟合。
- 显示菜单并处理用户选择。
方法:_initPlot
功能:初始化绘图项。
主要步骤:
- 创建并配置
pg.PlotDataItem
对象。 - 添加到绘图项中。
方法:configurePlot
功能:配置绘图样式。
主要步骤:
- 设置绘图项的绘图样式。
- 如果有后续数据处理步骤,递归调用其配置方法。
方法:addBinning
功能:添加分箱处理步骤。
主要步骤:
- 如果当前没有后续处理步骤,创建
BinningWidget
并添加到布局中。 - 更新数据。
方法:addFitting
功能:添加拟合处理步骤。
主要步骤:
- 如果当前没有后续处理步骤,创建
FittingWidget
并添加到布局中。 - 更新数据。
方法:reevaluateData
功能:重新评估数据。
主要步骤:
- 获取当前 X轴字段。
- 调用
updateData
方法更新数据。
方法:updateData
功能:更新数据。
参数:xtext
- X轴字段。
主要步骤:
- 获取当前 Y轴字段。
- 从数据源获取数据并应用过滤器。
- 更新图表中的数据。
方法:plotmpl
功能:在 matplotlib
图表中绘制数据。
参数:
ax
:matplotlib
图表轴对象。
主要步骤:
- 将数据绘制到
matplotlib
图表轴中。 - 如果有后续数据处理步骤,递归调用其绘图方法。