.net图表 - 如何强制数据标签始终显示在曲线上方?

时间:2014-01-27 18:44:19

标签: c# .net charts

在下面样本的蓝色曲线上,第一个数据点(74.2%)显示在曲线下方,而其他3个显示在曲线上方(85.9%,94.6%,104.7%)。

我最初认为,当该点距离图表区域顶部太近时,标签会显示在一个点下方。实际上,标签是否在点的上方或下方打印似乎是相当随意的(您会注意到第一个点也是Y轴上的“最低点”......)。

enter image description here

有没有办法强制标签始终打印在各自的点之上?

2 个答案:

答案 0 :(得分:6)

您没有发布任何重复代码,很难对屏幕截图中的代码进行反向工程。当你遇到这样一个非常具体的问题时,千万不要跳过这个。

猜测,你正在与“智能标签”功能进行斗争。这有点不可避免地意味着它会有自己的思想,迟早会做不到你希望它做的事情。您可以通过Series.SmartLabelStyle属性控制某些。绝对尝试的第一件事是将其Enabled property设置为false,以便它不再是智能的。你可以修改下一个是AllowOutsidePlotArea property

如果这些都不能让你到处找,那么请考虑利用Chart.PostPaint事件并自己绘制这些标签。当然,让你完全控制你把它们放在哪里。

答案 1 :(得分:2)

我不会禁用SmartLabelStyle,而是调整其参数。你应该看看MovingDirection Property。这可以控制允许标签移动的方向。 因此,您可能希望将其值设置为“顶部”。为了使其看起来更均匀,您应该将最小和最大移动距离指定为相同的安装。