我试图找出如何在存储在对象中的第一个日期在线图中启动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()));
}
}
答案 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