【问题标题】:DynamicDataDisplay Line Graph plotter with multiple data sources?具有多个数据源的 DynamicDataDisplay 折线图绘图仪?
【发布时间】:2013-01-03 15:13:54
【问题描述】:

我正在尝试在我的图表上绘制不同颜色的多条曲线。我目前正在使用一台绘图仪(不确定这是否可行,这就是我在这里发布帖子的原因),这是我的代码:

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();
  }
}

第一条曲线应该是绿色的,第二条曲线应该是红色的。 plotterCharterPlotter 但是当我查看图表时,我只有一条曲线。然后我查看了数据,似乎曲线显示了来自第二个数据源的数据,但曲线的颜色是绿色。

构造函数这样分配颜色:

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

在哪里,

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

基本上,我只在每次事件发生时更新数据点,因为我尝试过AddLineGraph(),但结果很慢, 所以我只更新数据点。 所以,有人给我任何指示吗?我该如何处理这种多数据源的情况?

【问题讨论】:

  • 我假设这是 D3 库,对吗?
  • 我认为是。绘图仪是 DynamicDataDisplay.CharterPlotter。
  • 这是一个猜测,但看起来您两次都在startIndex 为同一绘图仪子级设置了数据源:((LineGraph)plotter.Children.ElementAt(startIndex)).DataSource =,也许 A 和 B 的索引应该不同?如果它们绑定到同一个数据源,它可能会在彼此的顶部绘制两条曲线。
  • 是的,我更改了 startIndex,使它们从彼此相邻的 2 个点开始,现在它们都显示了!非常感谢。你能发布你的答案,我会接受。 :)
  • 还有一个问题,我可以更改数据源,但是我是否也可以更改画笔的颜色?

标签: c# wpf linegraph dynamic-data-display line-plot


【解决方案1】:

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

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

...

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

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

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

【讨论】:

  • 是索引问题。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 2023-03-12
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
相关资源
最近更新 更多