Gleiche Anzahl Intervalle bei Chart mit 2 Y-Achsen

  • VB.NET
  • .NET 4.5

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Gleiche Anzahl Intervalle bei Chart mit 2 Y-Achsen

    Hallo,

    ich verwende in meinem Chart 2 Y-Achsen. Nun ist es leider so, das die Anzahl der Intervalle systemseitig nicht immer übereinstimmt (siehe Bild).

    Ich kann auch keinen fixen Intervall eingeben, da die Werte doch stark variieren (zwischen 3stellig und 7stellig).
    Nun kann ich den Intervall ja per Code festlegen (5 Intervalle reichen mir):

    VB.NET-Quellcode

    1. With Me.Chart1.ChartAreas(0)
    2. .AxisY.Interval = (.AxisY.Maximum - .AxisY.Minimum) / 5
    3. .AxisY2.Interval = (.AxisY2.Maximum - .AxisY2.Minimum) / 5
    4. End With

    Allerdings weiß ich gerade nicht, an welcher Stelle ich den Code hinterlegen muss, damit dieser auch für die aktuellen Werte greift.
    Oder gibt es gar eine Option, welche die Anzahl der Intervalle identisch hält?

    Edit: Falls es notwendig ist: Es handelt sich um ein gebundenes Chart. Der Intervall soll sich natürlich beim Datensatzwechsel anpassen. Des weiteren kann der Benutzer aus verschiedenen Vorlagen auswählen, welche Werte aus dem Datensatz er sehen will. Hier soll sich der Intervall natürlich auch anpassen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „AndPod“ ()

    Also gut, Dein Code funktioniert erstmal an sich, um das Ziel, also 5 Intervalle pro Achse zu erreichen. Gut. Mir ist nur aufgefallen, dass man den Code nicht direkt an die Datenübergabe an das Chart bzw. die Series dranhängen darf, sonst passiert scheinbar nix. Ich musste ein Delay einbauen. Nicht schön, aber vielleicht reicht es.

    VB.NET-Quellcode

    1. Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. For i = 2000 To 2019
    3. Tds.Power.AddPowerRow(i, Random.Next(100))
    4. Tds.Power1.AddPower1Row(i, Random.Next(1000))
    5. Next
    6. For Each P In Tds.Power
    7. Chart1.Series(0).Points.AddXY(P.Year, P.PowerLoss)
    8. Next
    9. For Each P In Tds.Power1
    10. Chart1.Series(1).Points.AddXY(P.Year, P.PowerLoss)
    11. Next
    12. Await Task.Delay(1) 'das reicht, um die nachfolgende Änderung der Intervalle auch sichtbar zu machen
    13. Chart1.ChartAreas(0).AxisY.Interval = (Chart1.ChartAreas(0).AxisY.Maximum - Chart1.ChartAreas(0).AxisY.Minimum) / 5
    14. Chart1.ChartAreas(0).AxisY2.Interval = (Chart1.ChartAreas(0).AxisY2.Maximum - Chart1.ChartAreas(0).AxisY2.Minimum) / 5
    15. End Sub

    Nur zum Rest Deiner Fragen: Kommt mir etwas diffus vor. Aber vielleicht ist mit meiner Info auch schon die Frage beantwortet. Nach dem Ändern der Daten (wodurch kommen denn neue Daten in das Chart?) ein Delay, dann sollte es passen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.