Chartcontrol Series Problem

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Chartcontrol Series Problem

    Moin,

    mein Code liefert die Fehlermeldung: ArgumentException wurde nicht behandelt. Ein Diagrammelement mit dem Namen 'Plot 1' ist bereits in 'SeriesCollection' vorhanden; wenn ich das zweite Mal die Kurve berechnen lasse.
    Was eigentlich passieren sollte: Ich übergebe der Funktion eine 10x10 Matrix mit 5 Messungen. Daraus soll eine Drehzahl-Drehmoment-Kennlinie gezeichnet werden. Ich habe die Messwerte so angeordnet, dass in Zeile 0-4 die Drehzahlen und in Zeile 5-9 die Momente stehen. D.h. dass Zeile 0 und 5 (, 1 und 6, 2 und 7, ...) die Werte für eine Kurve liefern. Nach 5 Berechnungen möchte ich folglich 5 Kurven sehen und in der Legende Plot 1, Plot 2, ..., Plot 5.

    VB.NET-Quellcode

    1. Private Sub drawKennlinie(ByVal Matrix As Double(,))
    2. Dim Xachse_max As Double
    3. Dim Xachse_min As Double
    4. Graph.Series.Clear()
    5. For Zeile As Integer = 0 To 4 'Zeichenfläche formatieren
    6. Xachse_max = Math.Max(Xachse_max, Zeile) 'ermittel Maximum
    7. Xachse_min = Math.Min(Xachse_min, Zeile) 'ermittel Minimum
    8. Next
    9. Graph.ChartAreas(0).AxisX.Maximum = Xachse_max '+ 500 'verlängert die X-Achse um zusätzlich 500
    10. If Xachse_min >= 0 Then
    11. Graph.ChartAreas(0).AxisX.Minimum = 0 'Setzt Minimum auf 0 sofern alle Werte positiv
    12. Else : Graph.ChartAreas(0).AxisX.Minimum = Xachse_min '- 500 'verlängert die X-Achse um zusätzlich 500 in negativer Richtung
    13. End If
    14. For Zeile As Integer = 0 To 4 'Koordinaten einzeichnen
    15. For Spalte As Integer = 0 To 9 - 1
    16. If Matrix(Zeile, Spalte) <> 0 And Matrix(Zeile + 5, Spalte) <> 0 Then
    17. Graph.Series.Add(New Series("Plot " & Spalte + 1))
    18. Graph.Series(Spalte).Points.AddXY(Matrix(Zeile, Spalte), Matrix(Zeile + 5, Spalte))
    19. Graph.Series(Spalte).Points.AddXY(Matrix(Zeile, Spalte + 1), Matrix(Zeile + 5, Spalte + 1))
    20. Graph.Series(Spalte).BorderWidth = 2
    21. Graph.Series(Spalte).ChartType = SeriesChartType.Spline
    22. End If
    23. Next
    24. Next
    25. Graph.Update() 'Grafik anzeigen
    26. End Sub


    Momentan sehe ich für meinen ersten Plot in der Legende Plot 1-9, und meine einzige Kurve sieht aus wie am Christopher Street Day. Wie bekomme ich jeden Plot einfarbig?

    Edit: GESCHAFFT.
    Für die Verzweifelnden mit ähnlichem Problem hier die For-Schleife

    VB.NET-Quellcode

    1. For Zeile As Integer = 0 To 4 'Koordinaten einzeichnen
    2. Graph.Series.Add(New Series("Plot " & Zeile + 1))
    3. For Spalte As Integer = 0 To 9 - 1
    4. If Matrix(Zeile, Spalte) <> 0 And Matrix(Zeile + 5, Spalte) <> 0 Then
    5. Graph.Series("Plot " & Zeile + 1).Points.AddXY(Matrix(Zeile, Spalte), Matrix(Zeile + 5, Spalte))
    6. Graph.Series("Plot " & Zeile + 1).Points.AddXY(Matrix(Zeile, Spalte + 1), Matrix(Zeile + 5, Spalte + 1))
    7. Graph.Series("Plot " & Zeile + 1).BorderWidth = 2
    8. Graph.Series("Plot " & Zeile + 1).ChartType = SeriesChartType.Spline
    9. End If
    10. Next
    11. Next

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Cistbesser“ ()

    Cistbesser schrieb:

    wenn ich das zweite Mal die Kurve berechnen lasse
    passiert was?
    Vielleicht solltest Du beim 2. Rechnen das Chart löschen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Cistbesser schrieb:

    Edit: GESCHAFFT.
    Sorry, das war mir entfallen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!