Oxyplot-WPF:将数据从Double的List添加到DataPoint

时间:2018-06-16 22:26:32

标签: wpf charts oxyplot

我是WPF的新手,我正在进行的项目要求我在XY图表上绘制双重列表。我将Oxyplot添加到我的图表项目中,但我遇到了一些挑战。

我按照Oxyplot网站上的示例(参见下面的代码),但我发现DataPoint只能接受x和y的双值而不是数组或双精度列表。

如何为XValues绘制List<double>,为YValues绘制List<double>

namespace WpfApplication2
{
    using System.Collections.Generic;

    using OxyPlot;

    public class MainViewModel
    {
        public MainViewModel()
        {
            this.Title = "Example 2";
            this.Points = new List<DataPoint>
                              {
                                  new DataPoint(0, 4),
                                  new DataPoint(10, 13),
                                  new DataPoint(20, 15),
                                  new DataPoint(30, 16),
                                  new DataPoint(40, 12),
                                  new DataPoint(50, 12)
                              };
        }

        public string Title { get; private set; }

        public IList<DataPoint> Points { get; private set; }
    }
}

1 个答案:

答案 0 :(得分:1)

我真的不明白为什么您不能直接存储DataPoint列表...但是假设您被困在2个列表中,并且我假设您的列表具有相同的长度(如果没有,则有问题)因为要绘制的所有点都应具有X和Y值。

所以我猜是这样的:

List<double> XValues = new List<double> { 0, 5, 10, 22, 30 };
List<double> YValues = new List<double> { 2, 11, 4, 15, 20 };
for (int i = 0; i < XValues.Count; ++i)
{
  Points.Add(new DataPoint(XValues[i], YValues[i]));
}

这并不是很优雅,如果您是创建列表的人,则应将它们合并到DataPoint列表中,例如@PaoloGo。如果您不想使用oxyplot时更喜欢使用自定义对象,则可以创建一个简单的对象,例如:

public struct ChartPoint
{
    public double X;
    public double Y;
    public ChartPoint(double x, double y)
    {
        X = x;
        Y = y;
    }
}

然后将其存储:

List<ChartPoint> points;