数据实时监视器

该模块是一个用于在科学实验中实时绘制和分析数据的 PyQt6 控件。该控件集成了 pyqtgraph 库,用于高效地绘制和更新图表。

类:DataPlotterWidget

方法:__init__

功能:初始化 DataPlotterWidget 对象,设置属性和布局,启动定时器用于实时数据更新。

参数

  • axis_name:轴名称
  • prop_root:属性根路径
  • datastream_names:数据流名称列表
  • n_yaxis:Y轴数量
  • parent:父对象

主要步骤

  1. 初始化属性和数据管理器 (DataSummary)。
  2. 创建并设置网格布局 (QGridLayout)。
  3. 调用 buildPlotWidget 方法创建绘图小部件。
  4. 调用 buildDataSelector 方法创建数据选择器。
  5. 启动定时器,每20毫秒调用 checkForNewData 方法检查新数据。
方法:buildPlotWidget

功能:创建并设置绘图窗口和右键菜单。

主要步骤

  1. 创建 pyqtgraph 图形布局窗口 (GraphicsLayoutWidget)。
  2. 在窗口中添加绘图项 (PlotItem)。
  3. 添加右键菜单选项,通过 QAction 类实现。
方法:buildDataSelector

功能:创建并设置数据选择器界面。

主要步骤

  1. 创建数据选择器 (DataSelectorItem)。
  2. 创建 X轴选择器 (XAxisWidget) 和多个 Y轴选择器 (YAxisWidgetHelper)。
  3. 设置网格布局 (QGridLayout) 来管理数据选择器控件的排列和显示。
  4. 隐藏配置界面,默认不显示。
方法:toggleConfig

功能:切换配置界面的显示和隐藏状态。

主要步骤

  1. 根据 configVisible 变量的值显示或隐藏配置界面。
  2. 更新 configVisible 变量的值。
方法:setDataSource

功能:设置或更改数据源。

参数text - 数据源名称。

方法:checkForNewData

功能:检查是否有新数据,并更新图表。

主要步骤

  1. 调用 recvData 方法从数据源接收数据。
  2. 如果有新数据,更新 lastUpdate 时间戳。
  3. 调用 updateDatasourcesupdate 方法更新数据源和图表。
方法:updateDatasources

功能:检查并更新数据源列表。

主要步骤

  1. 创建一个新的数据源列表 sourcelist
  2. 如果数据源列表有变化,更新数据选择器中的数据源列表。
方法:update

功能:更新数据选择器中的可选数据字段,并更新图表。

主要步骤

  1. 从当前数据集中选择所有代表浮点数或整数的键。
  2. 更新数据选择器中的可选键列表。
  3. 调用 _updatePlotData 方法更新图表。
方法:_updatePlotData

功能:更新图表数据。

主要步骤

  1. 获取当前选中的 X轴字段。
  2. 调用每个 Y轴选择器的 updateData 方法更新数据。
方法:exportpdf

功能:导出图表为 PDF 文件。

主要步骤

  1. 创建一个 matplotlib 图表对象。
  2. 调用每个 Y轴选择器的 plotmpl 方法将数据绘制到图表上。
  3. 保存图表为 PDF 文件并使用查看器打开。
方法:clear

功能:清除数据。

主要步骤

  1. 调用数据管理器的 clear 方法清除数据。
  2. 移除所有图表项。
方法:plotData

功能:在图表中绘制数据。

参数

  • x:X轴数据
  • y:Y轴数据

主要步骤

  1. 创建一个 pg.PlotDataItem 对象并设置绘图样式。
  2. 将数据添加到图表项中并绘制。

类:YAxisWidgetHelper

方法:__init__

功能:初始化 YAxisWidgetHelper 对象,设置属性和布局。

参数

  • label:标签
  • plotter:数据绘图器对象
  • props:属性对象
  • plotitem:绘图项对象
  • parent:父对象

主要步骤

  1. 初始化 Y轴选择器,创建并设置布局和过滤器组合框。
  2. 创建并配置绘图项。
方法:updateYscale

功能:更新 Y轴缩放比例。

参数text - 缩放比例文本。

方法:createContextMenu

功能:创建上下文菜单。

参数position - 菜单位置。

主要步骤

  1. 创建菜单项用于添加过滤、分箱和拟合。
  2. 显示菜单并处理用户选择。
方法:_initPlot

功能:初始化绘图项。

主要步骤

  1. 创建并配置 pg.PlotDataItem 对象。
  2. 添加到绘图项中。
方法:configurePlot

功能:配置绘图样式。

主要步骤

  1. 设置绘图项的绘图样式。
  2. 如果有后续数据处理步骤,递归调用其配置方法。
方法:addBinning

功能:添加分箱处理步骤。

主要步骤

  1. 如果当前没有后续处理步骤,创建 BinningWidget 并添加到布局中。
  2. 更新数据。
方法:addFitting

功能:添加拟合处理步骤。

主要步骤

  1. 如果当前没有后续处理步骤,创建 FittingWidget 并添加到布局中。
  2. 更新数据。
方法:reevaluateData

功能:重新评估数据。

主要步骤

  1. 获取当前 X轴字段。
  2. 调用 updateData 方法更新数据。
方法:updateData

功能:更新数据。

参数xtext - X轴字段。

主要步骤

  1. 获取当前 Y轴字段。
  2. 从数据源获取数据并应用过滤器。
  3. 更新图表中的数据。
方法:plotmpl

功能:在 matplotlib 图表中绘制数据。

参数

  • axmatplotlib 图表轴对象。

主要步骤

  1. 将数据绘制到 matplotlib 图表轴中。
  2. 如果有后续数据处理步骤,递归调用其绘图方法。