如何使用 ZedGraph 在列顶部添加文本?

发布于 2024-11-26 21:29:07 字数 210 浏览 0 评论 0原文

如何在图表中的条形顶部添加一些文本。 这是我要添加的代码吧:

var color = ColorTranslator.FromHtml(row.Colour);
var barItem = graphPane.AddBar(row.Propensity.ToString(), null, Ys.ToArray(), color);

谢谢

How can I add some text on top of a bar in a chart.
This is the code I have to add the bar:

var color = ColorTranslator.FromHtml(row.Colour);
var barItem = graphPane.AddBar(row.Propensity.ToString(), null, Ys.ToArray(), color);

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

挖个坑埋了你 2024-12-03 21:29:07

下面是一个使用 TextObj 简单地向每个栏添加标签的快速示例。

GraphPane myPane = zedGraphControl1.GraphPane;

double[] y = { 100, 50, 75, 125 };

BarItem myBar = myPane.AddBar("Data", null, y, Color.Red);
for (int i = 0; i < myBar.Points.Count; i++)
{
    TextObj barLabel = new TextObj(myBar.Points[i].Y.ToString(), myBar.Points[i].X, myBar.Points[i].Y + 5);
    barLabel.FontSpec.Border.IsVisible = false;
    myPane.GraphObjList.Add(barLabel);
}

myBar.Label.IsVisible = true;

zedGraphControl1.AxisChange();
zedGraphControl1.Invalidate();

带标签的条形图

当然,这只是使用数据的值作为标签。如果您想使用自定义标签,您可以创建一个字符串数组或列表并在循环内使用它。

以下是一些 ZedGraph 参考资料:

Here is a quick example using TextObj to simply add labels to each bar.

GraphPane myPane = zedGraphControl1.GraphPane;

double[] y = { 100, 50, 75, 125 };

BarItem myBar = myPane.AddBar("Data", null, y, Color.Red);
for (int i = 0; i < myBar.Points.Count; i++)
{
    TextObj barLabel = new TextObj(myBar.Points[i].Y.ToString(), myBar.Points[i].X, myBar.Points[i].Y + 5);
    barLabel.FontSpec.Border.IsVisible = false;
    myPane.GraphObjList.Add(barLabel);
}

myBar.Label.IsVisible = true;

zedGraphControl1.AxisChange();
zedGraphControl1.Invalidate();

Bar chart with labels

Of course this just uses the value of the data as the label. If you wanted to use custom labels, you could create a string array or list and use that inside the loop.

Here are some ZedGraph references:

凝望流年 2024-12-03 21:29:07

您需要在文本对象中定义 AlignH 和 AlignV:

TextObj textLabel = new TextObj(value.ToString(), positionX, value, CoordType.AxisXYScale, AlignH.Center, AlignV.Top);

AlignV 定义值在条上的位置。

You need to define AlignH and AlignV in your text object:

TextObj textLabel = new TextObj(value.ToString(), positionX, value, CoordType.AxisXYScale, AlignH.Center, AlignV.Top);

AlignV define the position of your value on the bar.

空‖城人不在 2024-12-03 21:29:07

如果您希望标签文本与每个条形的值匹配,则可以使用一行代码来完成:

BarItem.CreateBarLabels(graphPane, false, "F0");

请注意,第三个参数是 double.ToString 格式。例如 "F0" = 12, "F2" = 12.34

但是,如果您想要灵活性,那么此解决方案并不理想。如果您有堆积条形图,它也不能很好地工作,因为任何 0 值数据都会导致标签重叠并且看起来很可怕

Providing you want the label text to match the value of each bar, then you can do it with a single line of code:

BarItem.CreateBarLabels(graphPane, false, "F0");

Note that the 3rd parameter is a double.ToString format. e.g. "F0" = 12, "F2" = 12.34

However, if you want any flexibity with it then this solution is not ideal. It also doesn't work very well if you have a stacked bar chart, because having any 0 value data will cause labels to overlap and look horrific

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文