MS Chart:如何将轴标签放在它的扩展名中

时间:2012-11-06 11:05:56

标签: vb.net visual-studio-2010 .net-4.0 charts axis-labels

我有一个简单的图表,其中一条线从负面上升到正面:它穿过水平轴。为了便于阅读,我确实将AxisY交叉设置为零。

ChartAmortisation.ChartAreas("Amortisation").AxisY.Crossing = 0

但是这样做,我的x轴标签位于图表下方,而x轴位于图表区域中间的上方。

如何在轴下或旁边设置AxisX标签?

Axis label should follow the axis

2 个答案:

答案 0 :(得分:1)

除非您从MS Chart类派生,否则我认为不可能做你想要的事情,并覆盖它绘制轴标题的方式。
相反,您可以将X轴保留在底部,然后检测0(零)值是否在Y值之间,如果是这种情况,则在y = 0处绘制自定义水平线。

答案 1 :(得分:1)

我成功使用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的Designer中设置这些帮助我可视化结果,但在运行时没有显示任何内容。

最后,这就是现在的样子。 Problem solved

标签位于图表内部以便于放置它们(否则我应该打扰轴上数字的大小)