在折线图上设置startdate

时间:2015-03-22 15:38:28

标签: c# datetime charts

我试图找出如何在存储在对象中的第一个日期在线图中启动X轴。我现在已经尝试了很长时间,而且我不确定我做错了什么。任何帮助将不胜感激。

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

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

enter image description here

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()));
   }


}

1 个答案:

答案 0 :(得分:1)

您可以添加多种格式的DataPoints

您希望他们拥有DateTime类型的X值和类型为double的Y值,因此请使用如下调用:

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

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

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

这样做有点棘手,因为Minimum只接受双打;这是因为即使您的类型设置为DateTime,即使您添加了DateTime X值,内部,它们仍会存储为{{1} }。

要在double添加Minimum DataPoints作为X-Values之后设置DateTimes等,您可以使用:

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";

注意添加的&#39; h&#39;并添加了撇号,结果如下:21.03'15 12h