ZedGraph (.NET) - Having axis labels for actual values only

前端 未结 1 1818
有刺的猬
有刺的猬 2021-01-15 21:06

Using the ZedGraph control, say I am plotting data that has Y values of 13, 34, and 55.

How do I set up my Y Axis so that the only text labels shown (and I guess tha

1条回答
  •  一生所求
    2021-01-15 21:45

    I don't think it is possible directly, out of the box.

    Here's some poor half-solution created using custom TextObj labels.

    First, you need to disable the old axis scale:

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

    Then, you need to create custom labels. If y_vals is the array of your Y-values:

    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); 
                }
    

    You can create your custom grid-lines just in the same way using LineObj. Just add this inside the foreach loop:

    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);
    

    0 讨论(0)
提交回复
热议问题