数组到pointpairlist(ZedGraph)

时间:2015-05-05 10:40:34

标签: c# arrays zedgraph

我试图使用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

谢谢你们所有的帮助,我真的很感激,但是,我认为我会把所有人与我要求的东西混为一谈。这是一个学生项目,我知道有些同学已经完成了这项工作,可以提供帮助。

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

//现在将其添加到曲线上,如上所述