如何在图表的栏顶部添加一些文字。 这是我必须添加条形码的代码:
var color = ColorTranslator.FromHtml(row.Colour);
var barItem = graphPane.AddBar(row.Propensity.ToString(), null, Ys.ToArray(), color);
谢谢
答案 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();
当然,这只是使用数据的值作为标签。如果您想使用自定义标签,您可以创建一个字符串数组或列表,并在循环内使用它。
以下是一些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
值数据将导致标签重叠并且看起来很可怕