2014-02-10 24 views
0

道歉無法爲我的問題在這裏找到更合適的標題。我在我的項目中使用MS Chart控件來繪製來自每秒生成4個值的源的實時值。 X軸是數值生成的時間,Y軸是數值本身。我正在動態地爲每個變量添加一個新的系列。所有變量都由用戶逐個手動添加,然後爲其創建一系列變量。質譜圖不能同時顯示所有的系列值(對於相同的X值)

基本部分似乎正在工作,除了圖表在不同時間繪製來自不同系列的值,即使這些值是在同一時間生成的。下面的圖像顯示確切的問題:

ms-chart issue

正如你所看到的,在底部的列表是我繪製值的列表。它顯示了在(hh:mm:ss.ms)處生成的值和時間。

當我繪製這些值(顯示在圖表區域中)時,這就是我所得到的。查看所有系列的最新值的位置(用紅色箭頭標記)。儘管它們都是同時生成的,但最新的值是在不同的時間。每個系列似乎都有一個單獨的X軸。我預計最新的Y值應繪製在相同的X值,並應顯示在圖表的最右側。更像最底部的系列正在顯示。這是創建的第一個系列。每次只有先創建的系列工作正常,以下系列由於某種原因滯後。

Chart, share X axis between different series看起來像我的類似問題,但沒有回答。

Chart Multiple series different length generate duplicate x axis似乎是我正確的問題,但不同之處在於 - 我繪製的是實時圖。在添加新數據點以標記點是否爲空之後,我無法遍歷每個系列。這將是很大的開銷。一些谷歌搜索建議使用InsertEmptyPoints()來匹配所有的X軸。 MS Chart示例代碼還解釋瞭如何使用此方法,但我不確定何時何地使用此方法。如果在創建系列之後但在添加數據點之前使用它,代碼會崩潰。我試過這樣的事情:

_chart.Series.Add(series); 
_chart.DataManipulator.InsertEmptyPoints(250, IntervalType.Milliseconds, name); 

我在這裏做錯了什麼?感謝您提供的任何幫助。

回答

0

我通過添加空白點得到了這個工作。我用最大可能的數據點填充每個系列以開始。假設我想在每個系列中顯示100個數據點,然後我開始刪除最舊的(Points [0])數據點,以便我的圖表看起來像從右向左移動。在這種情況下,我將增加,同時創造每使用100系列空分:

  for (int i = 0; i < 100; i++) 
      { 
       series.Points.AddXY(i.ToString(), double.NaN); 
       series.Points[i].AxisLabel = " "; 
      } 

然後,同時增加了真實的數據只是做正常方式:

  _chart.Series[index].Points.AddXY(time, YValue);       

      // delete more than max. points. 
      if (_chart.Series[index].Points.Count > MaxTrendPoints - 10) // -10 is adjustment. Got it by trial and error. 
       _chart.Series[index].Points.RemoveAt(0); 
相關問題