2016-10-27 12 views
-1

私は2つのデータ系列を持っています。最初のシリーズは「DHA」、2番目のシリーズは「NNC」です。 DHAのデータがNNCよりも短い(画像として示されている)。異なるデータ長で2つの系列を描画する方法

私は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

ハイチャートとしてタグ付けするのはなぜですか?データポイントの追加方法を教えてください。ほとんどの場合、x値を文字列として追加します。これは常に悪い考えです。 – TaW

+0

私のコードを更新しました。 –

+0

あなたが提案した後、私はすべてのX値をDateTimeに変更し、2つの系列に対して "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

あなたがその答えに満足しているなら、[accepting](http://stackoverflow.com/help/accepted-answer)それを考えてみてください.. ..! - あなたはこれをしたことがないことが分かります:答えの投票の下の左上にある(目に見えない)チェックマークをクリックしてクリックしてください!それは緑色に変わり、私たちに少しの評判をもたらします。 – TaW

関連する問題