С# Winforms Chart BoxPlot определяет значения x

У меня есть boxplot в моей winform

using System.Windows.Forms.DataVisualization.Charting;

Это выглядит так:

введите здесь описание изображения

            Series dataSeries = new Series(fieldName);

                    dataSeries.ChartType = SeriesChartType.BoxPlot;

                    double[] dataPoints = new double[]{
                        values.Min(),
                        values.Max(),
                        StatisticsHelpers.Median(values.Where(x => x < median).ToArray()),
                        StatisticsHelpers.Median(values.Where(x => x > median).ToArray()),
                        values.Average(),
                        median
                    };

            dataSeries.Points.Add(dataPoints);
            chartAttributes.Series.Add(dataSeries);

Как распределить ряды данных по диаграмме? Текущее поведение заключается в том, что ширина используемой области около 1 остается постоянной, а отдельные диаграммы делят эту область (чем больше диаграмм, тем тоньше становится каждая). Я предполагаю, что каким-то образом необходимо присвоить диаграммам разные значения x, но я не знаю, как это сделать.


person Chris    schedule 29.02.2016    source источник
comment
Вы можете указать имя библиотеки StatisticsHelpers?   -  person Somnath Kadam    schedule 12.04.2016


Ответы (1)


Поведение всех DataPoints в диаграмме нормальное. Чтобы изменить его, вам нужно:

  • Удалите точки, которые вам больше не нужны, или
  • Установите диапазон отображаемых точек.

Чтобы установить диапазон, вам нужен правильный DataPoints, т. е. тот, у которого есть числовой X-Value.

Вы используете неявный конструктор DataPoint, который не устанавливает X-Values. Так что все они устанавливаются на 0

Вместо этого вы всегда должны убедиться, что у вас есть значимые x-значения!

Это явный конструктор, который позволь тебе сделать это.

Если вы не хотите присваивать значение X-значениям, вы должны, по крайней мере, установить возрастающее число!

Вот как добавить «правильный» DataPoint:

    dataSeries.Points.Add(new DataPoint(dataSeries.Points.Count, dataPoints));

Теперь, когда все точки имеют числовые X-значения, вы можете контролировать, сколько из них должно отображаться. Это делается путем установки Minimum и Maximum оси X:

    yourChartArea.AxisX.Minimum = 2;
    yourChartArea.AxisX.Maximum = 7;

Теперь отображаются только пункты со 2 по 7.

Если вы на самом деле говорите о трех сериях, которые вы показываете: соответствующие точки каждой серии на диаграмме Column, Bar или Boxplot всегда группируются вместе; вы не можете отделить их от значения, которому они принадлежат.

person TaW    schedule 01.03.2016