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

时间:2011-07-29 14:37:39

标签: zedgraph

如何在图表的栏顶部添加一些文字。 这是我必须添加条形码的代码:

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

谢谢

3 个答案:

答案 0 :(得分:6)

以下是使用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();

Bar chart with labels

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

以下是一些ZedGraph引用:

答案 1 :(得分:1)

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

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

AlignV定义栏上值的位置。

答案 2 :(得分:0)

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

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

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

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

相关问题