2012-11-06 56 views
0

我有一个简单的图表,其中一条线从负面到正面:它横过水平轴。为了便于阅读,我确实将AxisY交叉点设置为零。MS Chart:如何将轴标签放置在它的扩展中

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

但这样做,我的x轴的标签保持低于在图表下方,而x轴以上图表区的中间。

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

Axis label should follow the axis

回答

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

的标签位于图表您更方便的内将它们

1

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

+0

感谢,这也将是一个很好的解决方案(否则我应该在轴上的数字的大小麻烦)。我更喜欢我刚刚发布的解决方案,甚至更复杂,并且缺点是在轴的“内侧”上有标签。 – Nicolas

相关问题