答案 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();
请注意,有时会切断顶部像素线;如果发生这种情况,你可以添加一点松弛。也许将yMax
乘以0.001d
或其他合适的数字..
如果使用缩放,则可能需要设置AxisView最小/最大属性。
图表上绘制的难度取决于ChartTypes
:Columns
或Bars
的任何内容都很难,因为这些形状的位置和大小无法访问。这包括BoxPlot
图表。如果您发布另一个特定问题,您可以尝试获得答案。请包含创建图表的详细信息(例如代码),尤其是。您如何添加数据或绑定它们的方式。还可以通过'外推'来包含您想要的内容!