Как отобразить несколько строк в UltraDataChart с учетом данных - PullRequest
0 голосов
/ 23 мая 2018

У меня есть дата с 3 столбцами Год (строка) Имя строки (строка)

        table.Columns.Add("YEAR", typeof(string));
        table.Columns.Add("LINE_NAME", typeof(string));
        table.Columns.Add("COUNT", typeof(double));

        table.Rows.Add(new object[] {"2018",    "Line1"              ,      2   });
        table.Rows.Add(new object[] {"2017",    "Line2"              ,      6   });
        table.Rows.Add(new object[] {"2018",    "Line2"              ,      1   });
        table.Rows.Add(new object[] {"2011",    "Line3"              ,      35  });
        table.Rows.Add(new object[] {"2013",    "Line3"              ,      143 });
        table.Rows.Add(new object[] {"2014",    "Line3"              ,      108 });
        table.Rows.Add(new object[] {"2015",    "Line3"              ,      50  });
        table.Rows.Add(new object[] {"2016",    "Line3"              ,      44  });
        table.Rows.Add(new object[] {"2017",    "Line3"              ,      34  });
        table.Rows.Add(new object[] {"2013",    "Line4"              ,      3   });
        table.Rows.Add(new object[] {"2014",    "Line4"              ,      6   });
        table.Rows.Add(new object[] {"2015",    "Line4"              ,      4   });
        table.Rows.Add(new object[] {"2016",    "Line4"              ,      1   });
        table.Rows.Add(new object[] {"2017",    "Line4"              ,      2   });

Чего я хочу достичь:

  1. ЕстьОсь X в качестве ГОДА

  2. У оси Y в качестве СЧЕТА

  3. Для каждой строки в столбце LINE_NAME есть отдельная линия на линейной диаграмме.

Я не могу на всю жизнь сообразить, как это сделать с помощью UltraDataChart ...

Может кто-нибудь проявит любезность, чтобы реализовать хотя бы двалинейный график, основанный на этих данных в качестве примера?

Количество «линий», которые будут существовать, технически неизвестно, но, безусловно, любой конкретный пример может быть преобразован в более общий цикл

1 Ответ

0 голосов
/ 02 августа 2018

UltraDataChart принимает в качестве списка источников данных объектов.Что вам нужно сделать, это сначала преобразовать ваши данные в списки объектов, таких как:

var data = table.AsEnumerable() // convert the data to Enumerable so you can use linq over it
    .Select(r => new { year = r["YEAR"], lineName = r["LINE_NAME"], count = r["COUNT"] }) // convert data to list of anonimous objects
    .GroupBy(d => d.lineName, (key, value) => new { key = key, value = value.ToList() }) // group the data by line names
    .ToArray();

Затем вам нужно добавить новую серию для каждого имени строки.Сначала добавьте нужные вам оси:

var xAxis = new NumericXAxis();
var yAxis = new NumericYAxis();
myChart.Axes.Add(xAxis);
myChart.Axes.Add(yAxis);

Затем просмотрите данные, которые вы создали, и добавьте все необходимые серии:

foreach (var line in data)
{
    var lineData = line.value;
    var series = new ScatterLineSeries();
    series.XAxis = xAxis;
    series.YAxis = yAxis;
    series.XMemberPath = "year";
    series.YMemberPath = "count";
    series.DataSource = lineData;
    myChart.Series.Add(series);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...