Hallo zusammen,
ich hänge jetzt seit 3 Tagen am selben Problem und komm absolut nicht weiter.
Mein Problem: Ich lasse 2 Linien in ein Diagramm zeichen, welche aber verschoben sein sollen. Das heißt Startpunkt für 1. Linie soll der 1.Punkt im Diagramm sein. Startpunkt für 2. Linie soll der 2.Punkt im Diagramm sein. Dies funktioniert auch( aber nur dann wenn die X-Achsenbeschriftung Zahlen sind siehe Foto). Da ich aber keine Zahlen sondern string-Werte für die X-Achsenbeschriftung habe, kann ich die Kurven nicht mehr verschieben. Ich hoffe mir kann jemand weiterhelfen.
Code für Zahlenbeschriftung:
double[] X_WERT;
X_WERT = new double[MyVars.Anzahl_Count_Unterbrechung];
double[] Versuch;
Versuch = new double[MyVars.Anzahl_Count_Unterbrechung];
int w = 0;
int u = 1;
for (int i = 0; i < MyVars.Anzahl_Count_Unterbrechung; i++)
{
X_WERT[i] = i + 1 + w;
Versuch[i] = i + 1 + u;
w++;
u++;
}
//Erzeugen Sie eine rote Kurve mit der "Kurve 1" in der Legende
LineItem myCurve = myPane.AddCurve("Unterbrechungszeit",X_WERT, MyVars.Messwerte_Unterbrechung, Color.Red);
//Machen Sie die Symbole undurchsichtig, sie mit weiß füllend
myCurve.Symbol.Fill = new Fill(Color.White);
// Erzeugen Sie eine grüne Kurve mit der "Kurve 2" in der Legende
myCurve = myPane.AddCurve("Wiederherstellungszeit",Versuch, MyVars.Messwerte_Wiederherstellung, Color.LimeGreen);
// Machen Sie die Symbole undurchsichtig, sie mit weiß füllend
myCurve.Symbol.Fill = new Fill(Color.White);
Hier der Code wenn ich mit strings für die X-Achsenbeschriftung arbeite
//Erzeugen Sie eine rote Kurve mit der "Kurve 1" in der Legende
LineItem myCurve = myPane.AddCurve("Unterbrechungszeit",null, MyVars.Messwerte_Unterbrechung, Color.Red);
//Machen Sie die Symbole undurchsichtig, sie mit weiß füllend
myCurve.Symbol.Fill = new Fill(Color.White);
// Erzeugen Sie eine grüne Kurve mit der "Kurve 2" in der Legende
myCurve = myPane.AddCurve("Wiederherstellungszeit",null, MyVars.Messwerte_Wiederherstellung, Color.LimeGreen);
// Machen Sie die Symbole undurchsichtig, sie mit weiß füllend
myCurve.Symbol.Fill = new Fill(Color.White);
//Set the XAxis labels
myPane.XAxis.Scale.TextLabels = MyVars.Uhrzeit_Wiederherstellung;
//Set the XAxis to Text type
myPane.XAxis.Type = AxisType.Text;
Wie könnte ich dieses Problem lösen???
Hi Waldi,
die Punkte, welche du übergibst, haben nur einen Wert, in dem Fall: Y.
Ohne dazugehörige X-Werte, werden die Kurven nicht korrekt dargestellt.
Dazu einfach eine PunkteListe erstellen
PointPairList aList = new PointPairList();
diese füttern
aList.Add(new PointPair(X, Y));
dann dein CurveItem erstellen
LineItem aCurve = new LineItem(aLegend, aList,
aColor, ZedGraph.SymbolType.Circle);
und adden
itsGraphControl.GraphPane.CurveList.Add(aCurve);
wenn du jetzt manuell die X-Werte auf TextLabels umbaust, zb so
itsGraphControl.GraphPane.XAxis.Type = AxisType.Text;
itsGraphControl.GraphPane.XAxis.TextLabels = aXTextList;
dann sollte es funktionieren (sieht Anhang).
Grüße,
Psy
Hallo psy,
erstmals vielen Dank für deine Hilfe!!!
Es funktioniert aber leider immer noch nicht. Gleiches Resultat wie davor. Ich hab es mal so versucht wie du es mir beschrieben hast.
//PunkteListe erstellen
PointPairList aList = new PointPairList();
PointPairList bList = new PointPairList();
// Pairlist mit Daten füllen
aList.Add(new PointPair(2, 31000));
aList.Add(new PointPair(3, 32000));
aList.Add(new PointPair(4, 30245));
aList.Add(new PointPair(5, 29212));
bList.Add(new PointPair(1, 28000));
bList.Add(new PointPair(2, 28000));
bList.Add(new PointPair(3, 28000));
bList.Add(new PointPair(4, 28000));
LineItem myCurve = myPane.AddCurve("Unterbrechungszeit", aList, Color.Black, ZedGraph.SymbolType.Circle);
LineItem meineKurve = myPane.AddCurve("Wiederherstellungszeit", bList, Color.Red, ZedGraph.SymbolType.Diamond);
Soweit funktioniert alles einwandfrei(siehe Bild1). Probleme gibt es jetzt, wenn ich die X-Achsenbeschriftung zu einem string umwandle. Das heißt wenn ich die Zeilen
myPane.XAxis.Type = AxisType.Text;
myPane.XAxis.Scale.TextLabels = MyVars.Uhrzeit_Wiederherstellung;
einfüge, werden die Startpunkte wieder zusammengelegt(siehe Bild 2). Kennst du vielleicht noch ne Möglichkeit wie ich dieses Problem in Griff bekommen könnte??
Hui .. lange Suche kurzer Text ...
du musst myCurve.IsOverrideOrdinal auf true setzen.
dann sollte es gehen.
Grüße,
Psy
Hallo psy,
jetzt endlich hat es funktioniert. Ich möchte mich nochmals vielmals für deine Hilfe bedanken!!!!!
Gruß Waldi