Oxyplot-WPF: добавление данных из списка двойников в DataPoint

Я новичок в WPF, и проект, над которым я работаю, требует, чтобы я построил список двойников на диаграмме XY. Я добавил Oxyplot в свой проект для построения диаграмм, но у меня возникли проблемы с получением графика.

Я последовал примеру на сайте Oxyplot (см. код ниже), но обнаружил, что DataPoint может принимать только двойные значения x и y, а не массив или список двойников.

Как я могу построить List<double> для XValues ​​и List<double> для YValues?

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

person Bloggrammer    schedule 16.06.2018    source источник
comment
Отредактировано: пожалуйста, как я могу передать список для XValues ​​​​и список для YValues ​​​​в DataPoint, который принимает только одно значение x и y за раз?   -  person Bloggrammer    schedule 17.06.2018
comment
Вам нужно спроецировать/объединить два списка двойников в один список объектов (например, DataPoint).   -  person Jan Paolo Go    schedule 17.06.2018


Ответы (1)


Я действительно не понимаю, почему вы не можете напрямую хранить список DataPoint... но скажем, вы застряли со своими двумя списками, и я предполагаю, что ваши списки имеют одинаковую длину (если у вас нет проблемы, так как все точки для рисования должны иметь значения 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;
person Mikitori    schedule 21.06.2018