Диаграмма частотного распределения на c#

247
15 сентября 2017, 18:37

Имеется набор данных, отображаемый в столбце DataGridView. Необходимо в ChartControl построить диаграмму распределения, например, как на изображении.

Диаграмму хотел сделать приблизительно следующим образом:

for (int k = 0; k < OutputDataGridView.Rows.Count-1; k++)
{
    chart1.Series[0].Points.AddXY(Double.Parse(OutputDataGridView[0,k].Value.ToString()), frequencyValue);
}
chart1.DataManipulator.Sort(PointSortOrder.Ascending, "X", "Series1");
chart1.DataManipulator.Group("First", 0.1, IntervalType.Number, "Series1");

Возник вопрос, как наиболее адекватно подсчитать частоту, с которой встречается значение в наборе данных, чтоб отображать ее по оси Y.

Answer 1

Наверное, я тупанул по-страшному, ибо, судя по всему, все оказалось проще, чем думал поначалу. В качестве frequencyValue в AddXY(...) указал единицу, а в chart1.DataManipulator.Group(...) вместо формулы группировки "First" - "Sum". Диаграмма вроде отображается как нужно.

Answer 2

Можно использовать Linq и не возиться с циклами и счетчиками:

.GroupBy(x => x.Value, (k, v) => new { Value = k, Count = v.Count() });

где Value - свойство, по которому вы хотите сгруппировать набор данных.

Вместо анонимного типа можно преобразовывать сразу в DataPoint:

.GroupBy(x => x.Value, (k, v) => new DataPoint(k, v.Count()));
READ ALSO
Как создать шаблон Web-application ASP.NET на macOS?

Как создать шаблон Web-application ASP.NET на macOS?

У меня macOS, на которую установлен Visual StudioКак именно создать проект с шаблоном Web-application ASP

290
JetBrains Rider dotnet-sdk-2.0.0

JetBrains Rider dotnet-sdk-2.0.0

Как в JetBrains Rider настроить сборку проекта

241
Практическая разница между Linq To Entites и Linq To Objects

Практическая разница между Linq To Entites и Linq To Objects

Изучая различия между LINQ To Entites и LINQ To Objects в EntityFramework - столкнулся с интересной вещью :

323
Отложенное логирование

Отложенное логирование

Есть приложение, к которому приходит запрос и приложение его обрабатываетВ процессе обработки могут вылезти болячки, которые надо залогировать...

292