C# Оксиплот Горизонтальный боксплот

У меня есть ряд ящиков, которые я создал в Oxyplot, которые выглядят так.
Можно ли вместо этого отобразить их как горизонтальные прямоугольники, чтобы они выглядели больше так?
Мой код выглядит следующим образом:

 var plot = new PlotModel();
        var items = new Collection<Item>();

        foreach (var item in MainWindow.classificationDistances)
        {
            items.Add(new Item { Label = item.Key.ToString() });
        }

        plot.Axes.Add(new LinearAxis
        {
            Position = AxisPosition.Left,
            MajorStep = 0.025,
            MinorStep = 0.005,
            Key = "Distance",
            TickStyle = TickStyle.Crossing,
            AbsoluteMaximum = 1,
            AbsoluteMinimum = -0.25
        });

        plot.Axes.Add(new CategoryAxis
        {
            Position = AxisPosition.Bottom,
            ItemsSource = items,
            LabelField = "Label",                 
            Key = "Classification",
            IsTickCentered = true,
            TickStyle = TickStyle.None,
            IsZoomEnabled = false
        });


        var s1 = new BoxPlotSeries
        {
            Fill = OxyColor.FromRgb(0x1e, 0xb4, 0xda),
            StrokeThickness = 1.1,
            WhiskerWidth = 1
        };

        double x = 0;
        foreach (var item in MainWindow.classificationDistances)
        {                
            var values = new List<double>();
            foreach (var value in item.Value)
            {
                values.Add(value);
            }

            values.Sort();
            var median = getMedian(values);
            int r = values.Count % 2;
            double firstQuartil = getMedian(values.Take((values.Count + r) / 2)); // 25%-Quartil
            double thirdQuartil = getMedian(values.Skip((values.Count - r) / 2)); // 75%-Quartil

            var iqr = thirdQuartil - firstQuartil; // Quartilabstand
            var step = 1.5 * iqr;
            var upperWhisker = thirdQuartil + step;
            upperWhisker = values.Where(v => v <= upperWhisker).Max();
            var lowerWhisker = firstQuartil - step;
            lowerWhisker = values.Where(v => v >= lowerWhisker).Min();
            var outliers = values.Where(v => v > upperWhisker || v < lowerWhisker).ToList();

            s1.Items.Add(new BoxPlotItem(x, lowerWhisker, firstQuartil, median, thirdQuartil, upperWhisker));
            x++;
        }

        plot.Series.Add(s1);
        return plot;

Смена позиций линейной оси и оси категорий соответствующим образом меняет ось, однако данные полностью не читаются.

Кроме того, возможно ли построить график плотности вероятности, чтобы я мог получить нечто подобное ?

Любая помощь будет принята с благодарностью.

0 ответов

Другие вопросы по тегам