我有一个简单的图表,其中一条线从负上升到正:它穿过水平轴。为了可读性,我确实将 AxisY 交叉设置为零。
ChartAmortisation.ChartAreas("Amortisation").AxisY.Crossing = 0
但是这样做,我的 x 轴标签保持在图表下方,而 x 轴位于图表区域中间的上方。
如何在轴下方或旁边设置 AxisX 标签?
我有一个简单的图表,其中一条线从负上升到正:它穿过水平轴。为了可读性,我确实将 AxisY 交叉设置为零。
ChartAmortisation.ChartAreas("Amortisation").AxisY.Crossing = 0
但是这样做,我的 x 轴标签保持在图表下方,而 x 轴位于图表区域中间的上方。
如何在轴下方或旁边设置 AxisX 标签?
我认为不可能做你想做的事,除非你从 MS Chart 类派生,并覆盖它绘制轴标题的方式。
相反,您可以将 X 轴留在底部,然后检测 0(零)值是否在 Y 值中,如果是这种情况 - 在 y = 0 处绘制一条自定义水平线。
我成功使用Annotations
. 我为两个轴做了这个,以保持视觉连贯性。这是我的垂直轴代码。
Dim caLabelAxisY As New TextAnnotation
With caLabelAxisY
.AnchorX = 0
.AxisX = ChartAmortisation.ChartAreas(0).AxisX
.AnchorY = ChartAmortisation.ChartAreas(0).AxisY.Maximum
.AxisY = ChartAmortisation.ChartAreas(0).AxisY
.Name = "Label AxisY"
.Text = "Investition / Überschuss"
.Font = New Font("Microsoft Sans Serif", 9, FontStyle.Bold)
.AnchorAlignment = ContentAlignment.TopLeft
End With
奇怪的是,设置AnchorY
不与图表的名称一起使用,而仅与它的索引一起使用。这表示:
'What works:
caLabelAxisY.AnchorY = ChartAmortisation.ChartAreas(0).AxisY.Maximum
'What doesnot work:
caLabelAxisY.AnchorY = ChartAmortisation.ChartAreas("Amortisation").AxisY.Maximum
此外,这仅在我以Annotations
编程方式设置时才有效。在 Visual Studio 2010 的设计器中设置这些有助于我可视化结果,但在运行时没有显示任何内容。
最后,这就是它现在的样子。
标签位于图表内,以便更方便地放置它们(否则我应该担心轴上数字的大小)