C# Winforms Chart BoxPlot 定义 x 值

C# Winforms Chart BoxPlot define x-values

我的 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 值,但我不知道如何。

将所有 DataPoints 放入图表的行为是正常的。要更改它,您需要:

  • 删除 点你不再想要或
  • 设置要显示的点的范围

要设置范围,您需要 适当的 DataPoints,即带有 数字 X-Value 的范围。

您正在使用未设置 X-Values 的隐式 DataPoint 构造函数。所以他们都被设置为 0

相反,您应该始终确保您拥有有意义的 x 值!

This is an explicit constructor 这会让你做到这一点。

如果您不想为 X 值赋予意义,您至少应该将其设置为递增的数字!

这是添加 'proper' DataPoint:

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

现在所有点都有数字 X 值,您可以控制显示多少点。这是通过设置 x 轴的 MinimumMaximum 来完成的:

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

现在只显示点 2 到 7。

如果您实际上是在谈论您显示的三个系列:ColumnBarBoxplot 图表中每个系列的对应点总是 组合在一起;你不能将它们分散到它们所属的值之外。