2016-10-27 61 views
-1

我有兩個數據系列。第一個系列被命名爲「DHA」,第二個系列是「NNC」。 DHA的數據比NNC的短(如圖所示)。如何繪製兩個數據長度不同的系列

當我使用C#在同一個圖表(Microsoft圖表)上繪製它們時。如果繪圖屬實,DHA系列必須由於滯後的DHA數據點而轉移至NNC。

但是,圖片顯示他們兩人同時出現! 問題1:這裏有什麼問題? 問題2:如何在X軸上的特定點繪製每個系列?

1)數據:

string[] DHAX = new string[] { 
      "2015-06-01", "2015-06-02", "2015-06-03", "2015-06-04", "2015-06-05", "2015-06-08", "2015-06-09", "2015-06-10", "2015-06-11", "2015-06-15", 
      "2015-06-16", "2015-06-17", "2015-06-18", "2015-06-19", "2015-06-22", "2015-06-23", "2015-06-24", "2015-06-25", "2015-06-26", "2015-06-29", 
      "2015-06-30", "2015-07-01", "2015-07-02", "2015-07-03", "2015-07-06", "2015-07-07", "2015-07-08", "2015-07-09", "2015-07-10", "2015-07-13", 
      "2015-07-14", "2015-07-15", "2015-07-16", "2015-07-17", "2015-07-20", "2015-07-21", "2015-07-22", "2015-07-23", "2015-07-24", "2015-07-27", 
      "2015-07-28", "2015-07-29", "2015-07-30", "2015-07-31", "2015-08-03", "2015-08-04", "2015-08-05", "2015-08-06", "2015-08-07", "2015-08-10", 
      "2015-08-11", "2015-08-12", "2015-08-13", "2015-08-14", "2015-08-17", "2015-08-18", "2015-08-19", "2015-08-20", "2015-08-21", "2015-08-24", 
      "2015-08-25", "2015-08-26", "2015-08-27", "2015-08-28", "2015-08-31", "2015-09-01", "2015-09-07", "2015-09-08", "2015-09-09", "2015-09-10", 
      "2015-09-11", "2015-09-14", "2015-09-15", "2015-09-16", "2015-09-17", "2015-09-18", "2015-09-21", "2015-09-22", "2015-09-23", "2015-09-24", 
      "2015-09-25", "2015-09-28", "2015-09-29", "2015-09-30", "2015-10-01", "2015-10-02", "2015-10-05", "2015-10-06", "2015-10-07", "2015-10-08", 
      "2015-10-09", "2015-10-12", "2015-10-13", "2015-10-14", "2015-10-15", "2015-10-16", "2015-10-19", "2015-10-20", "2015-10-21", "2015-10-22", 
      "2015-10-23", "2015-10-26", "2015-10-27" }; 
     double[] DHAY = new double[] { 
      17.9, 17.9, 17.6, 17.6, 17.7, 17.5, 17.5, 17.5, 17.4, 17.5, 17.5, 17.5, 17.4, 17.4, 17.2, 17.1, 17.2, 17.1, 17.2, 17.3, 17.1, 17.1, 
      17.1, 17.3, 17.3, 17.6, 17.6, 17.7, 18.8, 18.8, 18.4, 17.9, 18 , 17.9, 18 , 18.4, 18 , 18.2, 18.2, 18.1, 17.7, 18 , 17.8, 17.8, 
      17.8, 17.8, 18.3, 18.3, 18.2, 18.3, 18.2, 18.1, 18 , 18.1, 18.1, 18 , 18 , 17.8, 17.8, 17.2, 17.3, 17.7, 17.4, 17.7, 17.6, 17.9, 
      17 , 17 , 17 , 17 , 17 , 17 , 17 , 17 , 17.2, 17.3, 17.2, 17.2, 17 , 17 , 17 , 17.2, 17 , 17.1, 17.8, 18.7, 18.2, 18.7, 
      18.1, 18.1, 17.9, 17.7, 18.5, 18.5, 18.1, 17.8, 17.9, 17.9, 17.9, 18.1, 18.1, 17.9, 17.8 }; 
     string[] NNCX = new string[] { 
      "2015-05-25", "2015-05-26", "2015-05-27", "2015-05-28", "2015-05-29", "2015-06-01", "2015-06-02", "2015-06-03", "2015-06-04", "2015-06-05", 
      "2015-06-08", "2015-06-09", "2015-06-10", "2015-06-11", "2015-06-15", "2015-06-16", "2015-06-17", "2015-06-18", "2015-06-19", "2015-06-22", 
      "2015-06-23", "2015-06-24", "2015-06-25", "2015-06-26", "2015-06-29", "2015-06-30", "2015-07-01", "2015-07-02", "2015-07-03", "2015-07-06", 
      "2015-07-07", "2015-07-08", "2015-07-09", "2015-07-10", "2015-07-13", "2015-07-14", "2015-07-15", "2015-07-16", "2015-07-17", "2015-07-20", 
      "2015-07-21", "2015-07-22", "2015-07-23", "2015-07-24", "2015-07-27", "2015-07-28", "2015-07-29", "2015-07-30", "2015-07-31", "2015-08-03", 
      "2015-08-04", "2015-08-05", "2015-08-06", "2015-08-07", "2015-08-10", "2015-08-11", "2015-08-12", "2015-08-13", "2015-08-14", "2015-08-17", 
      "2015-08-18", "2015-08-19", "2015-08-20", "2015-08-21", "2015-08-24", "2015-08-25", "2015-08-26", "2015-08-27", "2015-08-28", "2015-08-31", 
      "2015-09-01", "2015-09-07", "2015-09-08", "2015-09-09", "2015-09-10", "2015-09-11", "2015-09-14", "2015-09-15", "2015-09-16", "2015-09-17", 
      "2015-09-18", "2015-09-21", "2015-09-22", "2015-09-23", "2015-09-24", "2015-09-25", "2015-09-28", "2015-09-29", "2015-09-30", "2015-10-01", 
      "2015-10-02", "2015-10-05", "2015-10-06", "2015-10-07", "2015-10-08", "2015-10-09", "2015-10-12", "2015-10-13", "2015-10-14", "2015-10-15", 
      "2015-10-16", "2015-10-19", "2015-10-20", "2015-10-21", "2015-10-22", "2015-10-23", "2015-10-26", "2015-10-27" }; 
     double[] NNCY = new double[] { 
      50.5, 50.5, 51, 51, 51, 50.5, 51, 50.5, 50.5, 49.5, 50.5, 51, 51, 51, 50.5, 49.7, 51, 51, 51, 51, 50.5, 50.5, 49.6, 50.5, 50.5, 50.5, 50, 
      50.5, 51, 50.5, 50.5, 50.5, 50, 50, 51, 50, 50, 50, 50, 51, 50.5, 54, 53, 52.5, 51, 51, 50.5, 51, 52.5, 51.5, 51.5, 51.5, 51.5, 52, 52, 52, 
      49.3, 48.7, 48, 48, 48.1, 49.4, 49.4, 48.6, 47.8, 48.1, 51, 50, 48, 49.9, 49.1, 50.5, 51, 49.8, 49.8, 49.8, 51, 50, 50.5, 51.5, 51.5, 51.5, 
      51, 51.5, 50.5, 51.5, 51.5, 51.5, 51.5, 51, 51.5, 52, 51, 51, 51, 51, 50.5, 51.5, 51, 51.5, 50.5, 50.5, 51.5, 54, 55, 55, 53.5, 54.5 }; 

2)繪製在圖表上的數據:

private void button1_Click(object sender, EventArgs e) 
     { 
      chart1.Series.Clear(); 
      chart1.Legends.Clear(); 
      chart1.Legends.Add(new Legend("Cross")); 
      chart1.ChartAreas[0].AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount; 
      chart1.ChartAreas[0].AxisX.IsLabelAutoFit = true; 
      chart1.ChartAreas[0].AxisX.MinorGrid.Enabled = false; 
      chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false; 
      chart1.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash; 
      //DHA Series 
      chart1.Series.Add("DHA"); 
      chart1.Series["DHA"].ChartType = SeriesChartType.Line; 
      chart1.Series["DHA"].XAxisType = AxisType.Primary; 
      //NNC Series 
      chart1.Series.Add("NNC"); 
      chart1.Series["NNC"].ChartType = SeriesChartType.Line; 
      chart1.Series["NNC"].XAxisType = AxisType.Primary; 
      //Draw DHA 
      for (int dha = 0; dha < DHAX.Length; dha++) 
      { 
       chart1.Series["DHA"].Points.AddXY(DHAX[dha], DHAY[dha]); 
      } 
      //Draw NNC 
      for (int nnc = 0; nnc < NNCX.Length; nnc++) 
      { 
       chart1.Series["NNC"].Points.AddXY(NNCX[nnc], NNCY[nnc]); 
      } 
     } 

enter image description here

+0

爲什麼要標記爲Highcharts?你能告訴我們如何添加數據點嗎?很可能你會將x值添加爲字符串。這總是一個壞主意。 – TaW

+0

我更新了我的代碼。 –

+0

建議之後,我已將所有X值更改爲DateTime,併爲兩個系列設置「XValueType = ChartValueType.DateTime」。結果是OK。感謝您的建議^^ –

回答

0

您如字符串添加x值。這是一個棘手的錯誤:產生的標籤沒問題,但所有的x值實際上都是0,所以在系列內部或跨系列時都不會錯誤地將對齊。當試圖做的事情與x的值,比如設定範圍或格式化也將出現其他問題,他們(丟失)值..

使用此轉換爲List<DateTime>

List<DateTime> DHAX_list = null; 

try 
{ 
    DHAX_list = DHAX.Select(x => Convert.ToDateTime(x)).ToList(); 
} 
catch { /* do catch wrong date strings here!! */} 

這添加日期:

//Draw DHA 
for (int dha = 0; dha < DHAX_list.Count; dha++) 
{ 
    chart1.Series["DHA"].Points.AddXY(DHAX[dha], DHAY[dha]); 
} 

對於這兩個系列都是這樣做的,數據將按照他們的要求對齊。

+0

好主意!它運作良好。非常感謝! –

+0

如果您對答案感到滿意,請考慮考慮[接受](http://stackoverflow.com/help/accepted-answer)它..! - 我發現你從來沒有這樣做過:在答案的選票下面,點擊左上角的(不可見)複選標記,然後單擊它!它變成了綠色,並且獲得了我們的一點聲譽.. – TaW

相關問題