如何在框图中限制y轴中的小数位数

时间:2017-05-02 05:44:41

标签: c#

  1. 我想在下面的boxplot中限制y轴中的小数位数。
  2. 然后我想在箱线图中为次要网格线添加值。
  3. 如何将y轴限制为箱线图所代表的数据中的最小值和最大值?
  4. 如何绘制一条线来推断每个箱形图的平均值,标准偏差?
  5. 我如何在c#

    中这样做

    enter image description here

1 个答案:

答案 0 :(得分:2)

在SO中,每个帖子只能提出一个问题

我会回答前三个因为它们都很简单并且很好地结合在一起......:

让我们从一些简短的参考文献开始:

ChartArea ca = yourChart.ChartAreas[0];

Axis ax = ca.AxisX;
Axis ay = ca.AxisY;

现在是标签格式;这会将小数位数限制为2

ay.LabelStyle.Format = "0.00";

接下来让我们解决MinorGrid Labels问题。 真的没有。相反,你必须明白

  • Labels, Major- and MinorGrid独立
  • Labels的间距为Axis.Interval
  • MajorGridLines的间距为Axis.MajorGrid.Interval
  • MinorGridLines的间距为Axis.MinorGrid.Interval
  • Axis.MajorGrid.Interval默认为Axis.Interval

这意味着您只需设置Axis.MinorGrid.Interval = Axis.Interval并将Axis.MajorGrid.Interval 明确设置为更大的值..:

ay.Interval = 10;
ay.MinorGrid.Enabled = true;
ay.MinorGrid.Interval = ay.Interval;
ay.MinorGrid.LineColor = Color.LightGray;

ay.MajorGrid.Interval = 40;

使用您自己的价值观!

最后一点:将y轴的范围设置为数据的实际最小值和最大值..

也不是很难,所有你需要做的就是获取这些数据。如何做到这一点取决于Chart

的详细信息

如果您只有一个 BoxPlot系列,则会执行以下操作:

Series S = yourChart.Series[0];

double yMax = S.Points.Max(x => x.YValues.Max());
double yMin = S.Points.Min(x => x.YValues.Min());

ay.Maximum = yMax;
ay.Minimum = yMin;

请注意,我们需要在Points集合 YValues集合中获得最大两者

如果你有几个系列,就像我一样,同样的原则适用;我们只需要在这些系列中添加另一个循环..:

double yMin = yourChart.Series.Select(s => s.Points.Min(x => x.YValues.Min())).Min();
double yMax = yourChart.Series.Select(s => s.Points.Max(x => x.YValues.Max())).Max();

enter image description here

请注意,有时会切断顶部像素线;如果发生这种情况,你可以添加一点松弛。也许将yMax乘以0.001d或其他合适的数字..

如果使用缩放,则可能需要设置AxisView最小/最大属性。

图表上绘制的难度取决于ChartTypesColumnsBars的任何内容都很难,因为这些形状的位置和大小无法访问。这包括BoxPlot图表。如果您发布另一个特定问题,您可以尝试获得答案。请包含创建图表的详细信息(例如代码),尤其是。您如何添加数据绑定它们的方式。还可以通过'外推'来包含您想要的内容!