DataVisualization图表-将点标签放置在条形图中(如果超出图表范围)

时间:2019-05-31 09:46:50

标签: c#

我正在C#中使用DataVisualization.Charting生成柱状图-我遇到的问题是,要添加以显示条形值的标签不在图表顶部显示(请参见下图)。

0值还可以,但是在下面的情况下,在理想情况下,我希望列上带有图表顶部数据的标签放置在其自身内-这完全可能吗?

我已经通过Series SmartLabelStyles尝试了各种设置,但是无法找到可行的解决方案。

以下是我如何向图表添加标签:

chart.Series[0].Points[0].Label = Math.Round(pos1, 2).ToString() + "hrs " + Math.Round(((pos1 / totalHoursV) * 100), 2).ToString() + "%";

enter image description here

更新

我尝试按照此答案(https://stackoverflow.com/a/28590709/2822664)在底部显示标签,该标签实际上对条形图中的值有效并在条形图中显示了值,但是随后弄乱了0,但显示不正确(请参见下图)。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以通过设置custom property来控制Labels alignment

这可以对整个Series进行,也可以对每个DataPoint进行,分别

Series s = chart1.Series[0];
s.ChartType = SeriesChartType.Column;
s.IsValueShownAsLabel = true;

for (int i = 0; i < 30; i++)
{
    int p = s.Points.AddXY(i, rnd.Next(30));
    DataPoint pt = s.Points[p];
    if (pt.YValues[0] >   10)   // use a suitable value!
    {
       pt.SetCustomProperty("LabelStyle", "Bottom");
       pt.LabelForeColor = Color.White;
    }
    else pt.LabelBackColor = Color.White;

}

enter image description here