Я пытаюсь построить несколько кривых разного цвета на своем графике. В настоящее время я использую один плоттер (не уверен, что он будет работать, и поэтому я публикую здесь тему), и вот мой код:
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 =
, может быть, индекс должен быть другим для A и B? Это может быть рисование обеих кривых прямо друг над другом, если они привязаны к одному и тому же источнику данных. - person WildCrustacean   schedule 03.01.2013