ZedGraph(.NET) - 仅为实际值设置轴标签

时间:2009-05-25 15:13:27

标签: .net winforms controls graph zedgraph

使用ZedGraph控件,假设我正在绘制Y值为13,34和55的数据。

如何设置Y轴以便显示的唯一文本标签(我猜这些网格线将同步)是13,34和55的那些?

我不希望在我的数据范围内定期间隔标签(例如0,25,50,75,..)。只需标出实际值。

1 个答案:

答案 0 :(得分:3)

我认为不可能直接开箱即用。

这是使用自定义TextObj标签创建的一些糟糕的半解决方案。

首先,您需要禁用旧轴刻度:

zg1.MasterPane[0].YAxis.Scale.IsVisible = false;
zg1.MasterPane[0].YAxis.MajorTic.IsAllTics = false;

然后,您需要创建自定义标签。如果y_vals是Y值的数组:

foreach (double val in y_vals)
            {
                TextObj text = new TextObj(val.ToString(), zg1.MasterPane[0].XAxis.Scale.Min, val);
                text.Location.AlignH = AlignH.Right;
                text.FontSpec.Border.IsVisible = false;
                text.FontSpec.Fill.IsVisible = false;
                zg1.MasterPane[0].GraphObjList.Add(text); 
            }

您可以使用LineObj以相同的方式创建自定义网格线。只需在foreach循环中添加:

LineObj line = new LineObj(zg1.MasterPane[0].XAxis.Scale.Min, val, zg1.MasterPane[0].XAxis.Scale.Max, val);
 line.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash;
 line.Line.Width = 1f;
 zg1.MasterPane[0].GraphObjList.Add(line);