在折线图上设置开始日期
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
我想弄清楚如何在存储在对象中的第一个日期开始折线图中的 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