2009-05-25 6 views
1

Mit der ZedGraph Kontrolle, sagen ich Daten am Plotten, die Y-Wert von 13, 34 und 55.ZedGraph (.NET) - Mit Achsenbeschriftungen für Ist-Wert nur

Wie richte ich meine Y-Achse nach oben so dass die einzigen Textbeschriftungen angezeigt werden (und ich denke, dass Gitterlinien synchronisiert werden) sind das für 13, 34 und 55?

Ich möchte keine regelmäßigen Etiketten im Bereich meiner Daten (zB 0, 25, 50, 75, ..). Nur Etiketten bei den tatsächlichen Werten.

+1

dies helfen kann: http://stackoverflow.com/questions/816256/zedgraph-labels –

+0

Danke für die Anregung, das ist leider etwas anders – xyz

Antwort

3

Ich glaube nicht, dass es direkt, out of the Box möglich ist.

Hier sind einige schlechte Halb-Lösung mit benutzerdefinierten TextObj Etiketten erstellt.

Zuerst müssen Sie die alte Achsenskalierung deaktivieren:

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

Dann müssen Sie benutzerdefinierte Etiketten erstellen. Wenn y_vals die Anordnung Ihrer Y-Werte ist:

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

Sie können Ihre benutzerdefinierten Gitterlinien nur auf die gleiche Weise mit LineObj erstellen. fügen Sie diese einfach in der foreach-Schleife:

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

Danke für die Antwort. Ich dachte, diese Frage sei schon lange tot :-) – xyz

+0

Ich bin neu bei stackoverflow und habe nach einigen Fragen gesucht, die mit "zedgraph" gekennzeichnet sind;) Ich habe das Postdate später bemerkt;) – Gacek