2013-01-03 63 views
1

我想在圖上繪製不同顏色的多條曲線。我目前正在使用一個繪圖儀(不知道這會的工作,這就是爲什麼我在這裏張貼線程),這裏是我的代碼:具有多個數據源的DynamicDataDisplay線圖繪圖儀?

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(),但它原來是很慢, 所以我只更新數據點。 那麼,有誰給我任何指針?我如何處理這種多數據源情況?

+0

我假設這是D3庫,是否正確? – WildCrustacean

+0

我認爲這是。繪圖儀是一個DynamicDataDisplay.CharterPlotter。 –

+0

這是一個猜測,但是它看起來像是在'startIndex'同時爲同一個繪圖儀子設置數據源:'((LineGraph)plotter.Children.ElementAt(startIndex)).DataSource =',也許索引A和B應該不同?如果它們綁定到相同的數據源,它可能會將兩條曲線繪製在彼此之上。 – WildCrustacean

回答

1

看起來你是在startIndex兩個通道設置相同的繪圖儀子數據源:

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

... 

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

第二次賦值將會導致DataSourcedsChB覆蓋,這將使它只顯示一條線。

也許A和B的指數應該是不同的?

+0

這是索引問題。非常感謝! –

相關問題