ZedGraph (.NET) - Наличие меток оси только для фактических значений - PullRequest
1 голос
/ 25 мая 2009

Используя элемент управления ZedGraph , скажем, я строю данные, значения Y которых равны 13, 34 и 55.

Как настроить ось Y таким образом, чтобы отображались только текстовые метки (и я предполагаю, что линии сетки будут синхронизированы) для 13, 34 и 55?

Я не хочу регулярно размещать метки в диапазоне моих данных (скажем, 0, 25, 50, 75, ..). Просто метки на фактических значениях.

1 Ответ

3 голосов
/ 23 сентября 2009

Я не думаю, что это возможно напрямую, из коробки.

Вот плохое половинное решение, созданное с помощью пользовательских меток 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);
...