在折线图上设置开始日期

Setting startdate on line chart

我想弄清楚如何在存储在对象中的第一个日期开始折线图中的 X 轴。我已经尝试了很长一段时间了,但我不确定自己做错了什么。任何帮助将不胜感激。

它只是说我不能从 DateTime 转换为 Double,这是有道理的,但我不知道如何解决这个问题。

我已经缩进了我正在努力工作的代码部分。提前致谢!

private void loadChart(List<Temperatur> templist)
{
   // clear charts
   this.chart1.Series.Clear();
   this.chart2.Series.Clear();

   // add Data to charts
   Series series = this.chart1.Series.Add((templist.ElementAt(0).Date).ToString());
   Series series2 = this.chart2.Series.Add((templist.ElementAt(0).Date).ToString());
   // defines type of chart
   series.ChartType = SeriesChartType.Line;
   series2.ChartType = SeriesChartType.Line;
   // sets line thickness
   series.BorderWidth = 3;
   series2.BorderWidth = 3;
   // sets chart limits  and intervals
   chart1.ChartAreas[0].AxisY.Maximum = 42;
   chart1.ChartAreas[0].AxisY.Minimum = 35;
   chart1.ChartAreas[0].AxisY.Interval = 0.5;

   //sets X axis labels
        chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days;
        chart1.ChartAreas[0].AxisX.Minimum = Convert.ToDouble(templist.ElementAt(0).Date);

   // removes legend from chart
   chart1.Legends[0].Enabled = false;
   chart2.Legends[0].Enabled = false;

   foreach (Temperatur tempObj in templist)
   {
     // Add point.
     series.Points.Add(Convert.ToDouble(tempObj.Temp));

   }


   foreach (Temperatur tempObj in templist)
   {
       // Add point.
       series2.Points.Add(Convert.ToInt32(tempObj.Puls.ToString()));
   }


}

您可以添加多种格式的 DataPoints

您希望它们具有 DateTime 类型的 X 值和 double 类型的 Y 值,因此使用如下调用:

series.Points.AddXY(tempObj.Date, tempObj.Temp);

如果你想在 Minimum 开始显示你需要使用 Points 集合的键,如果 X 值是日期,它将是一个日期,如果它们是数字(乘以默认)你使用一个数字。

如果您从未设置过 X 值,默认情况下它们将从 0 开始(转换为 DateTime 时将显示为 1899..)

这样做有点棘手,因为 Minimum 只接受双打;那是因为即使您的类型设置为 DateTime 并且即使您添加了 DateTime X 值,内部 它们仍然存储为 double .

要在将 DataPoints 及其 X-Values 添加为 DateTimes 后设置 Minimum 等,您可以使用:

int yourStartIndex = 1;
chart1.ChartAreas[0].AxisX.Minimum = series.Points.ElementAt(yourStartIndex).XValue;

要控制显示的 X 轴标签,请设置其 Format;这是一个例子:

chart1.ChartAreas[0].AxisX.LabelStyle.Format = "dd.MM.\'yy hh\h";

注意添加的 'h' 和添加的撇号导致类似:21.03'15 12h