私は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]);
}
}
ハイチャートとしてタグ付けするのはなぜですか?データポイントの追加方法を教えてください。ほとんどの場合、x値を文字列として追加します。これは常に悪い考えです。 – TaW
私のコードを更新しました。 –
あなたが提案した後、私はすべてのX値をDateTimeに変更し、2つの系列に対して "XValueType = ChartValueType.DateTime"を設定します。結果はOKです。あなたの提案をありがとう^^ –