图形将时间添加到数组中的每个值
Graph add time to every value in a Array
我得到一个整数数组from a file
示例:
0: 56
1: 57
2: 58
3: 59
4: 60
5: 61
6: 62
7: 63
我已经使用 Linq 从中获取了所有数据,现在我有了一个 INT 数组
如何告诉图表每个值都与上一个值相差 15 分钟,以便它可以正确绘制?
X 系列已设置为 "time"
我如何从文件中读取数据:
int[] data = File
.ReadLines(file)
.Select(line => line.Substring(line.IndexOf(':') + 1))
.Where(line => !string.IsNullOrWhiteSpace(line))
.Select(line => int.Parse(line))
.ToArray();
chart1.DataSource = data;
第 1 步:确保 x-values 实际上是有效且正确的时间。
第 2 步格式化轴以显示正确的间隔。
使用直接数据点添加的示例:
DateTime start = DateTime.Now;
chart.Series[0].XValueType = ChartValueType.DateTime;
//loop over x..:
chart.Series[0].Points.AddXY(start.AddMinutes(x * 15, start), yValue);
您可以使用相同的函数将您必须的整数转换为数据源中 15 分钟时间步长的升序。
要进行格式化,您可以使用如下代码:
Axis ax = chart.ChartAreas[0].AxisX;
ax.LabelStyle.Format = "HH:mm";
ax.IntervalType = DateTimeIntervalType.Minutes;
ax.Interval = 15;
更新:
答案显示了如何将数据转换为合适的形式以及如何设置图表格式。它忽略了您获取数据的方式。
你完全丢掉了台词的第一部分。您也永远不会显示数据绑定的完整代码。
这是第一个读取两部分数据的 Linq 代码:
var data = File.ReadLines(file)
.Where(line => !string.IsNullOrWhiteSpace(line))
.Select( line => line.Split(':') )
.Select( parts => new { x = int.Parse(parts[0]), y = int.Parse(parts[1]) } )
.ToArray();
但是 x-values 仍然只是整数。这是一个将它们转换为 DateTimes
的代码,从每个 int
:
计算 15 分钟的间隔
DateTime start = DateTime.Now;
var chartData = File.ReadLines(file)
.Where(line => !string.IsNullOrWhiteSpace(line))
.Select( line => line.Split(':') )
.Select( parts => new { x = start.AddMinutes(int.Parse(parts[0]) * 15), y = int.Parse(parts[1]) } )
.ToArray();
您可以像这样将它们绑定到图表:
s.XValueMember = "x";
s.YValueMembers = "y";
chart.DataSource = chartData;
请注意,您需要将图表放大 400 多个点才能看到 15 分钟的间隔。
我得到一个整数数组from a file
示例:
0: 56
1: 57
2: 58
3: 59
4: 60
5: 61
6: 62
7: 63
我已经使用 Linq 从中获取了所有数据,现在我有了一个 INT 数组
如何告诉图表每个值都与上一个值相差 15 分钟,以便它可以正确绘制?
X 系列已设置为 "time"
我如何从文件中读取数据:
int[] data = File
.ReadLines(file)
.Select(line => line.Substring(line.IndexOf(':') + 1))
.Where(line => !string.IsNullOrWhiteSpace(line))
.Select(line => int.Parse(line))
.ToArray();
chart1.DataSource = data;
第 1 步:确保 x-values 实际上是有效且正确的时间。
第 2 步格式化轴以显示正确的间隔。
使用直接数据点添加的示例:
DateTime start = DateTime.Now;
chart.Series[0].XValueType = ChartValueType.DateTime;
//loop over x..:
chart.Series[0].Points.AddXY(start.AddMinutes(x * 15, start), yValue);
您可以使用相同的函数将您必须的整数转换为数据源中 15 分钟时间步长的升序。
要进行格式化,您可以使用如下代码:
Axis ax = chart.ChartAreas[0].AxisX;
ax.LabelStyle.Format = "HH:mm";
ax.IntervalType = DateTimeIntervalType.Minutes;
ax.Interval = 15;
更新:
答案显示了如何将数据转换为合适的形式以及如何设置图表格式。它忽略了您获取数据的方式。
你完全丢掉了台词的第一部分。您也永远不会显示数据绑定的完整代码。
这是第一个读取两部分数据的 Linq 代码:
var data = File.ReadLines(file)
.Where(line => !string.IsNullOrWhiteSpace(line))
.Select( line => line.Split(':') )
.Select( parts => new { x = int.Parse(parts[0]), y = int.Parse(parts[1]) } )
.ToArray();
但是 x-values 仍然只是整数。这是一个将它们转换为 DateTimes
的代码,从每个 int
:
DateTime start = DateTime.Now;
var chartData = File.ReadLines(file)
.Where(line => !string.IsNullOrWhiteSpace(line))
.Select( line => line.Split(':') )
.Select( parts => new { x = start.AddMinutes(int.Parse(parts[0]) * 15), y = int.Parse(parts[1]) } )
.ToArray();
您可以像这样将它们绑定到图表:
s.XValueMember = "x";
s.YValueMembers = "y";
chart.DataSource = chartData;
请注意,您需要将图表放大 400 多个点才能看到 15 分钟的间隔。