具有多个数据源的线形图绘图仪

本文关键字:绘图仪 数据源 | 更新日期: 2023-09-27 17:50:45

我正在尝试在我的图形上绘制不同颜色的多条曲线。我目前正在使用一个绘图仪(不确定是否会起作用,这就是为什么我在这里发布一个线程),这是我的代码:

if (_dataXChA != null && _dataXChA.Length > 1)
{
  EnumerableDataSource<double> xChA = new EnumerableDataSource<double>(_dataXChA);
  xChA.SetXMapping(xVal => xVal);
  if (_dataYChA != null && _dataYChA.Length == _dataXChA.Length)
  {
    EnumerableDataSource<double> yChA = new EnumerableDataSource<double>(_dataYChA);
    yChA.SetYMapping(yVal => yVal);
    CompositeDataSource dsChA = new CompositeDataSource(xChA, yChA);
    ((LineGraph)plotter.Children.ElementAt(startIndex)).DataSource = dsChA;                   
    plotter.FitToView();
  }
}
if (_dataXChB != null && _dataXChB.Length > 1)
{
  EnumerableDataSource<double> xChB = new EnumerableDataSource<double>(_dataXChB);
  xChB.SetXMapping(xVal => xVal);
  if (_dataYChB != null && _dataYChB.Length == _dataXChB.Length)
  {
    EnumerableDataSource<double> yChB = new EnumerableDataSource<double>(_dataYChB);
    yChB.SetYMapping(yVal => yVal);                    
    CompositeDataSource dsChB = new CompositeDataSource(xChB, yChB);
    ((LineGraph)plotter.Children.ElementAt(startIndex)).DataSource = dsChB;
    //LineGraph lgChA = plotter.AddLineGraph(dsChB, _dataBrushColorChB, 1, "Data");
    plotter.FitToView();
  }
}

第一条曲线应为绿色,第二条曲线应为红色。plotter = CharterPlotter,但是当我观察图像时,我只得到一条曲线。然后我看了看数据,曲线似乎显示了来自第二个数据源的数据,但是曲线的颜色是绿色的。

构造函数像这样分配颜色:

LineGraph lgChA = plotter.AddLineGraph(dsChA, _dataBrushColorChA, 1, "Data");
LineGraph lgChB = plotter.AddLineGraph(dsChB, _dataBrushColorChB, 1, "Data");

,

_dataBrushColorChA = Colors.Green;
_dataBrushColorChB = Colors.Red;

基本上,我只在每次事件发生时更新数据点,因为我已经尝试过AddLineGraph(),但事实证明它非常慢,所以我只更新数据点。有人能给我点建议吗?如何处理这种多数据源情况?

具有多个数据源的线形图绘图仪

看起来您正在为startIndex的同一绘图仪子节点设置两个通道的数据源:

((LineGraph)plotter.Children.ElementAt(startIndex)).DataSource = dsChA;
...
((LineGraph)plotter.Children.ElementAt(startIndex)).DataSource = dsChB;

第二个赋值将导致DataSourcedsChB覆盖,这将使它只显示一行。

也许A和B的索引应该不同?