如果x轴上的标签以角度

时间:2017-01-17 10:07:40

标签: c# bar-chart mschart

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

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

设置IsMarginsVisible并没有解决问题。

有没有办法取消这个保证金?

可视化问题的屏幕截图:

With angle and unintended margin No margin, but no angle

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

请注意:前一段时间,如果元素数量变得很大,我也遇到了类似的问题,这个问题仍然没有解决(MSChart axis misplaced for huge charts)。我可以提出任何问题和建议,以避免成为另一个不受欢迎的问题。

P.S。如果你有这种想法的冲动,请告诉我为什么这样我可以尝试改进它(因为我无法看到自己这个问题不明确或缺少记录的迹象)。谢谢。

1 个答案:

答案 0 :(得分:2)

不幸的是,我认为这是所有类型条形图的错误。要清楚,因为问题被低估了:如果X的位置(如果位置从Auto更改为0,0,100,100,则很多空白区域)出现在图表的底部(Y型轴为条形图表) -axis文本通过chart1.ChartAreas[0].AxisX.LabelStyle.Angle = 30;成角度,如提供的示例或例如。 chart1.ChartAreas[0].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.LabelsAngleStep30;

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

  1. 如果您在提供的代码中挤压图表的宽度(与问题中的屏幕截图相同),则保证金会不断增加,而正确的行为则无法改变。
  2. 您可以通过将图表类型更改为任何类型的柱形图
  3. 来进一步验证
  4. 此行为更重要的是仅在主X轴中显现,而不是在辅助X轴中。
  5. 我尝试过CustomLabels并反转X轴,而是使用辅助Y轴,但是底部的任何轴都会错误地计算它的大小。事实上,即使您使用辅助Y轴,也必须禁用Primary,以避免底部出现空白缩放。

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

    • 需要更多工作,您可以绘制自己的标签,使用Post_Paint事件Example
    • 如果可能,请考虑行为正确的柱形图
    • 或者使用顶部的辅助Y轴

    后者都会彻底改变图表的外观,但让您可以控制边距。总结:不,这似乎是一个错误,没有办法通过设置"正确"来删除边距。属性。