【问题标题】:How to add a text on top of a column with ZedGraph?如何使用 ZedGraph 在列顶部添加文本?
【发布时间】:2011-07-29 14:37:38
【问题描述】:

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

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

谢谢

【问题讨论】:

标签: zedgraph


【解决方案1】:

这是一个使用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 参考资料:

【讨论】:

    【解决方案2】:

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

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

    AlignV 定义你的值在栏上的位置。

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多