标签和 y 轴之间的边距,如果 x 轴上的标签以角度显示

Margin between labels and y-axis, if labels on x-axis are shown with angle

我最近不得不更改 x 轴标签的大小以确保它们在打印时清晰易读。这样做,标签和轴本身之间出现了一个边距,它的大小似乎取决于字体大小和数据点的数量。

当移除标签上的角度时,这个边距似乎消失了 (AxisX.LabelStyle.Angle = 0)。不幸的是,这不是解决方案,因为标签上的角度是项目的要求。

设置 IsMarginsVisible 没有解决问题。

有什么办法可以去掉这个边距吗?

可视化问题的屏幕截图:

此处提供了显示该问题的 MCVE:https://www.dropbox.com/s/4y0nwj8bymz6m3q/MSChart%20-%20misplaced%20labels.zip?dl=0

请注意:前段时间,我运行陷入了类似的问题,如果元素的数量变得巨大,这也是未解决的(MSChart axis misplaced for huge charts)。我可以回答任何问题和建议,以避免这个问题变得像其他问题一样不受欢迎。

P.S。如果您有对这个问题投反对票的冲动,请告诉我原因,这样我可能会尝试改进它(因为我无法看到自己在这个问题不清楚或缺少重新搜索迹象的地方)。谢谢。

不幸的是,我认为这是所有类型条形图的错误。要明确,因为问题被否决了:边距(如果 Position 从 Auto 更改为 0,0,100,100,则有很多空白)出现在图表底部(Y-Axis for bar-type-of 图表) X-axis 文本通过 chart1.ChartAreas[0].AxisX.LabelStyle.Angle = 30; 倾斜,如提供的示例或例如。 chart1.ChartAreas[0].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.LabelsAngleStep30;.

我怀疑这种奇怪的错误行为有几个原因,即:

  1. 如果您在提供的代码中将图表的宽度压缩在一起(与问题中的屏幕截图相同),边距会不断增加,而正确的行为不会改变。
  2. 您可以通过将图表类型更改为 Column-chart
  3. 的任何类型来进一步验证这一点
  4. 更重要的是,此行为仅在主 X-Axis 中出现,在辅助中不明显。

我已经尝试了 CustomLabels 并反转了 X-Axis 并改为使用辅助 Y-axis,但是底部的 any 轴的大小计算不正确。事实上,即使您使用次要 Y-Axis,也必须禁用主要,以避免 white-space 在底部缩放。

这意味着最明显的选项可悲地减少为:

  • 需要更多工作,您可以使用 Post_Paint event (Example)
  • 绘制自己的标签
  • 如果可能的话,考虑一个行为正确的柱形图
  • 或者使用顶部的辅助 Y-axis

后者都极大地改变了图表的外观,但确实让您可以控制边距。结论:不,这似乎是一个错误,无法通过设置 "correct" 属性来删除边距。