Chart & X-Achse Beschriftung

  • VB.NET

Es gibt 42 Antworten in diesem Thema. Der letzte Beitrag () ist von hw522.

    Chart & X-Achse Beschriftung

    Guten Tag und hallo zusammen,

    ich schreibe ein kleines Programm in dem auch ein Chart mit Datenkurve eine Rolle spielt.
    Y(x) stammt aus der ersten Spalte eines ListView, die Werte für die x-Achse sind in der 2. Spalte des LV. Die Kurve wird gezeichnet.
    Wie kriege ich es hin, das die Werte aus der 2. Spalte als Beschriftung für die x-Achse dienen?
    Die Einträge im ListView varieren, sind also manchmal mehr, manchmal weniger. Die x-Achse kann also nicht statisch erzeugt werden.

    Bei den y-Werten und bei der Skalierung etc. hatte ich kein Problem, die Kurve wird gezeichnet. Nur die x-Achse stellt sich quer.

    Hat jemand eine Idee wie das zu machen ist?

    Danke,
    hw522
    vielleicht erkläre ich es mal so:

    die Beschriftung der X-Achse sieht aus z.B.:

    09.06.1900 10.06.1900 11.06.1900 ....... statt
    09.06.2022 10.06.2022 11.06.2022 .......

    Es bleibt immer beim Jahr 1900, Tag und Monat werden korrekt übernommen, das Jahr nicht - das verstehe ich nicht.

    Hat jemand einen Tipp?
    Willkommen im Forum. :thumbup:
    @hw522 Wie generierst Du die Daten im LV?
    Wie übernimmst Du die Daten im LV?
    Poste mal das bereinigte (ohne bin, obj, vs-Verzeichnisse) und gezippte Projekt.
    Erweiterte Antwort => Dateianhänge => Hochladen.
    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!
    sorry, aber mein Projekt werde ich nicht hochladen, denn
    das dürfte ein reines Syntax-Problem sein:

    Quellcode

    1. Dim form_xachse As String = Format("dd.MM.yyyy")
    2. Chart1.ChartAreas(0).AxisX.LabelStyle.Format = form_xachse

    => 13.06.1900

    Das Format wird auch eingehalten, nur die Jahreszahl ist falsch
    Die Formatierung an sich greift, wie eine Änderung zeigt

    Quellcode

    1. Format(“ddd, dd.MM.yyyy")

    erscheint => Mo, 13.06.1900

    hw522 schrieb:

    das dürfte ein reines Syntax-Problem sein
    Dann beantworte wenigstens alle gestellten Fragen.

    RodFromGermany schrieb:

    Wie generierst Du die Daten im LV?
    Auf welchen Datentyp wencdest Du das Format an?
    Hast Du Option Strict On :?:
    Visual Studio – Empfohlene Einstellungen
    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!
    Tja, wie sehen denn die Werte aus ListView( <X )-Spalte#2 aus? Hast Du da nur Tag und Monat drin?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    'Option strict on' habe ich nicht geladen,
    die Daten im LV für Spalte 1 und 2 importiere ich zuerst aus je einer Text-Datei
    Sa, 01. 01 22
    So, 02. 01 22
    Mo, 03. 01 22
    .....
    178,9
    164,0
    168,7
    .....

    in ein Array

    Quellcode

    1. ​Dim daten_arr() As String = File.ReadAllLines("daten.txt")
    2. Dim datum_arr() As String = File.ReadAllLines("datum.txt")

    Anschließend

    Quellcode

    1. ​For i = 0 To datum_arr.Count - 1
    2. zz += 1
    3. With ListView1.Items.Add("(" & String.Format("{0:000}", zz) & ") " & datum_arr(i))
    4. .SubItems.Add(daten_arr(i))
    5. End With
    6. Next


    und für den Graph

    Quellcode

    1. ​For x = 0 To daten_arr.count - 1
    2. Dim d_a As Double = daten_arr(x)
    3. Chart1.Series(0).Points.AddXY(x, d_a)
    4. Next
    Laut diesen Angaben kommt folgendes im ListView an:

    Solche Daten können nicht ohne weiteres in Datumsangaben umgewandelt werden, von daher sind entweder die Daten Unfug oder der gezeigte (leider auch noch unvollständige) Code. Daher kann ich hier erstmal keine weitere Hilfe leisten.

    Option Strict On kann man nicht "laden", sondern das ist eine Pflichteinstellung: siehe empfohlene VS-Einstellungen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Kann man. Aber Du schreibst in Post#7 Sa, 01. 01 22, nicht Sa, 01.01.2022. In Post#7 fehlt als das Jahrhundert und der Punkt zwischen Monat und Jahr. Daher sind entweder die Daten falsch oder Deine Angaben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Wie lauten nun die echten Daten? Erst damit kann man herausfinden, warum daraus 1900 und nicht 2022 gemacht wird.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Und mit diesen Daten wird das Chart jetzt richtig angezeigt oder immer noch mit 1900?

    Bilder solltest Du forenintern über [+ Erweiterte Antwort] -> _|Dateianhänge|_ -> [Hochladen] posten. Nicht wenige (Power)User hier klicken ungern auf ImageHosterLinks und stellen stattdessen die Hilfe hier im Thread ein bzw. fangen gar nicht erst mit Hilfe an. Deine Entscheidung.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Chart & X-Achse Beschriftung

    Mit

    Quellcode

    1. ​Chart1.ChartAreas(0).AxisX.LabelStyle.Format = Format(“dd.MM.yyyy")

    sieht das so aus:
    Bilder
    • Screenshot 2022-06-17 121736.jpg

      20,78 kB, 1.075×168, 49 mal angesehen
    • Screenshot 2022-06-17 122058.jpg

      6,36 kB, 172×56, 468 mal angesehen
    Und mit welcher Codezeile gibst Du die Datumsangaben an die X-Achse weiter? DataBinding, manuell? Bitte Codezeile posten.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    ja - das ist di Frage aller Fragen.
    Wieso wird eigentlich die Zeitspanne 1.1.2022 bis zum letzten Datum erkannt und in der x-Achse mit Tag und Monat angezeigt? Wenn das so ist müsste doch auch das Jahrrichtig gezeigt werden.........????
    Ich weiß es nicht.
    @hw522 Mach Dir ein kleines separates Testprogramm, in dem Du ausschließlich die Konvertierung Deiner Zeichenfolge in einen DateTime-Wert untersuchst.
    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!
    Da von Haus aus nur die x-Werte, also 0 bis wasauchimmer in der X-Achse stehen, muss das Chart verändert worden sein. Und zwar von Dir. Entweder steht das explizit in Deinem Code. Oder Du hast das Chart im Designer verändert. Ersteres kannst Du z.B. durch Codeinspektion erkennen oder indem Du in ein neues Form oder Projekt ein leeres Chart reinhaust und dort die Daten mit der AddXY-Methode reinzimmerst. Dann sollte unten kein Datum mehr stehen, sondern nur 0, 1, 2, …
    Die von Dir vorgenommenen Veränderung im Designer können wir analysieren, indem Du den Inhalt der DeinForm.Designer.VB postest.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.