Charts: Bei mehr als 9 Elementen wird nur jede zweite Beschriftung angezeigt.

  • VB.NET
  • .NET 4.5

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

    Charts: Bei mehr als 9 Elementen wird nur jede zweite Beschriftung angezeigt.

    Hallo Leute,

    wie am Bild zu sehen, möchte ich ein Chart mit 12 Elementen befüllen (in meinem Fall 12 Monate).
    Leider wird unterhalb der Balken nur jedes zweite Monat angezeigt (als Text). Unabhängig von der Pixelbreite des Charts.
    Wenn ich nur 9 Monate aufliste, dann wird jedes Monat als Text angezeigt.

    Wie bekomme ich nun alle 12 Monate unten als Text angezeigt?

    VB.NET-Quellcode

    1. Public Sub GrafischerJahresVergleich()
    2. Me.Cursor = Cursors.WaitCursor
    3. With Chart1
    4. .Series.Clear()
    5. .ChartAreas("ChartArea1").AxisX.MajorGrid.LineColor = Color.WhiteSmoke
    6. .ChartAreas("ChartArea1").AxisY.MajorGrid.LineColor = Color.WhiteSmoke
    7. Dim JahrString As String = ""
    8. For JahresZaehler As Integer = 0 To 4
    9. JahrString = (Year(Now) - JahresZaehler).ToString
    10. .Series.Add(JahrString)
    11. .Series(JahrString).IsValueShownAsLabel = True
    12. .Series(JahrString).LabelToolTip = "Umsätze " + JahrString
    13. .Series(JahrString).SmartLabelStyle.Enabled = False
    14. .Series(JahrString).LabelAngle = -90
    15. Select Case JahresZaehler
    16. Case 0
    17. .Series(JahrString).LabelForeColor = Color.LimeGreen
    18. .Series(JahrString).Color = Color.LimeGreen
    19. Case 1
    20. .Series(JahrString).LabelForeColor = Color.FromArgb(64, 64, 64)
    21. .Series(JahrString).Color = Color.FromArgb(64, 64, 64)
    22. Case 2
    23. .Series(JahrString).LabelForeColor = Color.Tomato
    24. .Series(JahrString).Color = Color.Tomato
    25. Case 3
    26. .Series(JahrString).LabelForeColor = Color.Goldenrod
    27. .Series(JahrString).Color = Color.Goldenrod
    28. Case 4
    29. .Series(JahrString).LabelForeColor = Color.Gray
    30. .Series(JahrString).Color = Color.Gray
    31. End Select
    32. For i As Integer = 1 To 12
    33. .Series(JahrString).Points.AddXY(MonthName(i, True), CLng(1020 * i * (JahresZaehler + 1)))
    34. Next i
    35. Next JahresZaehler
    36. End With
    37. Me.Cursor = Cursors.Default
    38. End Sub
    Bilder
    • 17092018163505.jpg

      155,53 kB, 1.371×483, 14 mal angesehen
    Liebe Grüße
    Roland Berghöfer

    Bei der Entwicklung meiner Anwendung(en) steht nicht "Code nach .NET Lehrbuch" im Vordergrund, sondern eine stabile und brauchbare Anwendung die der Anwender ordentlich verwenden kann. Usability für den Kunden und Supportbarkeit beim Kunden stehen an oberster Stelle. Das spiegelt sich auch in meinen Fragen und Antworten wider. Bitte verzeiht, dass meine VB.NET Quellcodes etwas VB6-lastig sind aber das ist für das funktionierende Endergebnis nicht wirklich relevant.
    @dive26 Dies macht bei mir für jeden Monat einen Strich - alle 30 Tage:

    VB.NET-Quellcode

    1. Chart1.ChartAreas(0).AxisX.Interval = 30
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Vielen Dank!

    VB.NET-Quellcode

    1. .ChartAreas("ChartArea1").AxisX.Interval = 1
    war die Lösung ;)
    Liebe Grüße
    Roland Berghöfer

    Bei der Entwicklung meiner Anwendung(en) steht nicht "Code nach .NET Lehrbuch" im Vordergrund, sondern eine stabile und brauchbare Anwendung die der Anwender ordentlich verwenden kann. Usability für den Kunden und Supportbarkeit beim Kunden stehen an oberster Stelle. Das spiegelt sich auch in meinen Fragen und Antworten wider. Bitte verzeiht, dass meine VB.NET Quellcodes etwas VB6-lastig sind aber das ist für das funktionierende Endergebnis nicht wirklich relevant.