我试图使用ZedGraph显示一些数据。数据是从一个文件中读入的,然后存储在一个名为heart_rate [x]的数组中,我试图将其传递给点对列表,但是它不会接受字符串数组。搜索之后,我认为它需要先转换为双倍。我试过这个,但没有运气。
以下是通过从文件中读取数据来创建数组的代码。理想情况下,我不想改变它,因为我有其他数组以相同的方式编写,这需要重写整个程序。
for (x = 0; x < hrm_data.Length; x = x + 6)
{
heart_rate.Add(hrm_data[x]);
}
这里是我设置ZedGraph的地方,显然缺少将数组传递给点对列表的代码。
GraphPane myPane = z_graph.GraphPane;
myPane.Title = "HRM Data";
myPane.XAxis.Title = "Time";
myPane.YAxis.Title = "Readings";
PointPairList heart_rate_list = new PointPairList();
LineItem heart_rate_curve = myPane.AddCurve("Heart Rate", heart_rate_list, Color.Red, SymbolType.Diamond);
z_graph.AxisChange();
修改
以下是我正在阅读的文件示例。第一列数据是心率读数。使用for循环我只选择第一列并将其添加到数组
91 43 56 78 45 78
91 43 56 78 45 78
91 43 56 78 45 78
91 43 56 78 45 78
编辑2
谢谢你们所有的帮助,我真的很感激,但是,我认为我会把所有人与我要求的东西混为一谈。这是一个学生项目,我知道有些同学已经完成了这项工作,可以提供帮助。
答案 0 :(得分:0)
您应该只需获取hrm_data
的字符串项,拆分它们,选择拆分的第一项并使用double
方法转换为Double.Parse
:s。
然后使用PointPairList(double[], double[])
构造函数(请参阅here)创建所需的点对列表:
PointPairList heart_rate_list = new PointPairList(
Enumerable.Range(0, hrm_data.Length).Select(i => (double)i).ToArray(),
hrm_data.Select(item => Double.Parse(item.Split(' ')[0])). ToArray());
请注意,x
坐标是通过创建转换为double
集合的索引集合生成的。
答案 1 :(得分:0)
是的,因为您提到代码不完整。
PointPairList heart_rate_list = new PointPairList();
因为你已经定义了列表,但是你忘了为它设置参数。基本上(x,y)..你需要输入你的所有数组值作为x或y的参数之一。循环使用foreach插入数组的值。 //使用
将int x作为秒的时间添加 foreach(int value in heart_rate)
{ y=value;
heart_rate_list.Add(x,y)
};
//现在将其添加到曲线上,如上所述