DataTable in Chart wird nicht richtig dargestellt

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von roepke.

    DataTable in Chart wird nicht richtig dargestellt

    Ich habe eine DataTable _dtn

    als Datenquelle an einen chart_Chart Chart gebunden.
    Für die Y-Achse ermittle ich den Min/Max Bereich durch suchen des Min/Max Wertes in der DataTable und addiere sogar noch was drauf.
    Dann richte ich den Chart wie folgt ein:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim AreaName As String = "MeineArea"
    2. 'Chart an DataTable binden
    3. chrt_Chart.DataSource = _dtn
    4. 'Chart säubern
    5. chrt_Chart.ChartAreas.Clear()
    6. chrt_Chart.Titles.Clear()
    7. chrt_Chart.Series.Clear()
    8. chrt_Chart.Legends.Clear()
    9. 'Area erstellen und die Y-Achse einrichten
    10. chrt_Chart.ChartAreas.Add(AreaName)
    11. With chrt_Chart.ChartAreas(AreaName).AxisY
    12. .Maximum = _dMaxRes + 0.001 : .Minimum = _dMinRes - 0.001 : .Interval = (_dMaxRes - _dMinRes) / 25
    13. .MajorGrid.Enabled = True
    14. .MinorGrid.Enabled = False
    15. End With
    16. 'Serien definieren
    17. For _i As Integer = 1 To _dtn.Columns.Count - 1
    18. chrt_Chart.Series.Add(_dtn.Columns(_i).ColumnName)
    19. With chrt_Chart.Series(_dtn.Columns(_i).ColumnName)
    20. .ChartArea = AreaName
    21. .IsXValueIndexed = True
    22. .XValueMember = _dtn.Columns(0).ColumnName 'an Datenspalte binden
    23. .YValueMembers = _dtn.Columns(_i).ColumnName
    24. .ChartType = Charting.SeriesChartType.FastPoint
    25. .IsVisibleInLegend = True
    26. .MarkerStyle = Charting.MarkerStyle.Triangle
    27. .MarkerSize = 10
    28. End With
    29. Next


    Trotzdem sieht mein Chart nicht so aus wie gewünscht. Es fehlen ganz viele Werte darin. Obwohl die Y-Achse ausreichend ist.
    Und die angezeigten liegen alle im selben Wertebereich.

    Hat jemand eine Idee? Ich stehe auf dem Schlauch.

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Habs gerade probiert die Rundung, die ich im Kopf hatte, funktioniert so nicht.
    Ohne Code werd ich es leider nicht erraten. Kann die Tabelle vielleicht schuld sein?
    Versuch mal eine typisierte DataTable

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

    Schöner Fehler, Dein Tipp hat geholfen,wenn auch durch die Hinterür.
    Die DataTable wird an einer ganz anderen Stelle im Code erstellt und beim Erzeugen der Spalten hatte ich den Typ nicht gegeben.
    War

    VB.NET-Quellcode

    1. _dt.Columns.Add(dtToAdd.Columns(1).ColumnName)

    muss sein

    VB.NET-Quellcode

    1. _dt.Columns.Add((dtToAdd.Columns(1).ColumnName), GetType(Double))

    Keine Ahnung was da als Standardtyp angenommen wird, ist wohl einfach nur ein Object.
    Daher wurden die Double, die es eigentlich sein sollen, ignoriert.