Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Grafana
  5. Bar Chart: Bars nebeneinander?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

Bar Chart: Bars nebeneinander?

Geplant Angeheftet Gesperrt Verschoben Grafana
11 Beiträge 2 Kommentatoren 642 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Merlin123M Merlin123

    Ich habe 5 Werte, die nebeneinander dargestellt werden sollen.
    Stacked ist auf "none", er macht die Bars aber alle an die gleiche Stelle und nicht nebeneinander. Also nicht-gestacked geht, aber ich krieg das nebeneinander nicht hin. Hab mir schon nen Wolf gegoogelt, aber irgendwie nicht die passende Lösung gefunden.

    Abfrage sieht so aus:

    from(bucket: "iobroker")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.PV_Produktion" 
      or r["_measurement"] == "0_userdata.0.PV_Eigenverbrauch" 
      or r["_measurement"] == "0_userdata.0.PV_Netzbezug" 
      or r["_measurement"] == "0_userdata.0.PV_Wallbox" 
      or r["_measurement"] == "0_userdata.0.PV_Nur_Einspeisung")
      |> filter(fn: (r) => r["_field"] == "value")
      |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
      |> yield(name: "mean")
    

    Graph so:
    Screenshot 2025-02-08 184952.png

    W Online
    W Online
    wolfi913
    schrieb am zuletzt editiert von wolfi913
    #2

    @merlin123
    Wenn Du die Abfrage in verschiedene Querys (A-E) aufteilst sollten die nebeneinander stehen.
    Kannst ja mal eine Kopie machen und nur z.B. 0_userdata.0.PV_Nur_Einspeisung in der zweiten stehen lassen.
    Sollte das immer noch nicht helfen wäre auch noch möglich die Query B um 1sek mit

      |> timeShift(duration: 1s)
    

    und dann C mit 2s usw. zu verschieben. Sollte aber eigentlich nicht notwendig sein.

    Ergänzung:
    Bei mir funktioniert das so ganz gut. Sogar in Kombination mit Stacking
    Screenshot 2025-02-08 192134.png
    Das geht aber dann nur mit dem timeShift

    Merlin123M 1 Antwort Letzte Antwort
    0
    • W wolfi913

      @merlin123
      Wenn Du die Abfrage in verschiedene Querys (A-E) aufteilst sollten die nebeneinander stehen.
      Kannst ja mal eine Kopie machen und nur z.B. 0_userdata.0.PV_Nur_Einspeisung in der zweiten stehen lassen.
      Sollte das immer noch nicht helfen wäre auch noch möglich die Query B um 1sek mit

        |> timeShift(duration: 1s)
      

      und dann C mit 2s usw. zu verschieben. Sollte aber eigentlich nicht notwendig sein.

      Ergänzung:
      Bei mir funktioniert das so ganz gut. Sogar in Kombination mit Stacking
      Screenshot 2025-02-08 192134.png
      Das geht aber dann nur mit dem timeShift

      Merlin123M Offline
      Merlin123M Offline
      Merlin123
      schrieb am zuletzt editiert von Merlin123
      #3

      @wolfi913 Danke für den Hinweis.
      Der Timeshift ändert aber nichts an der Darstellung
      Die 2. Query sieht jetzt z.B. so aus.

      from(bucket: "iobroker")
        |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.PV_Eigenverbrauch") 
        |> filter(fn: (r) => r["_field"] == "value")
        |> timeShift(duration: 1s)
        |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
        |> yield(name: "mean")
      

      Zeitraum sind 12 Stunden mit 12 Datenpunkten.

      Beta-Tester

      W 1 Antwort Letzte Antwort
      0
      • Merlin123M Merlin123

        @wolfi913 Danke für den Hinweis.
        Der Timeshift ändert aber nichts an der Darstellung
        Die 2. Query sieht jetzt z.B. so aus.

        from(bucket: "iobroker")
          |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
          |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.PV_Eigenverbrauch") 
          |> filter(fn: (r) => r["_field"] == "value")
          |> timeShift(duration: 1s)
          |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
          |> yield(name: "mean")
        

        Zeitraum sind 12 Stunden mit 12 Datenpunkten.

        W Online
        W Online
        wolfi913
        schrieb am zuletzt editiert von wolfi913
        #4

        @merlin123
        Das timeShift müsste nach dem aggregateWindow rein. Bräuchtest Du aber eigentlich nicht.
        Also z.B. so:

        from(bucket: "iobroker_short")
          |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
          |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Datenpunkte.usv.verbrauch")
          |> filter(fn: (r) => r["_field"] == "value")
          |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
          |> timeShift(duration: 1s)
        

        Ich hab's mit einem neuen Grafana-Chart gerade bei mir nochmal ausprobiert. Funktioniert bei mir in meinem Test auch ohne einwandfrei. Das bräuchtest Du tatsächlich nur (wie in meinem Beispiel vorher) wenn das ganze in Kombination mit Stacking sein soll.

        Was Du, falls das nicht ohnehin schon drin ist, probieren kannst wäre bei Query options bei MinInterval 1h oder wie in Deinem obigen Chart 30meinzutragen wenn pro Stunde eh nur ein Wert angezeigt werden soll.
        Screenshot 2025-02-08 225848.png
        Du gibst ja in der Query hier

          |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
        

        keinen festen Zeitrahmen every: v.windowPeriod vor.

        Merlin123M 1 Antwort Letzte Antwort
        0
        • W wolfi913

          @merlin123
          Das timeShift müsste nach dem aggregateWindow rein. Bräuchtest Du aber eigentlich nicht.
          Also z.B. so:

          from(bucket: "iobroker_short")
            |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
            |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Datenpunkte.usv.verbrauch")
            |> filter(fn: (r) => r["_field"] == "value")
            |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
            |> timeShift(duration: 1s)
          

          Ich hab's mit einem neuen Grafana-Chart gerade bei mir nochmal ausprobiert. Funktioniert bei mir in meinem Test auch ohne einwandfrei. Das bräuchtest Du tatsächlich nur (wie in meinem Beispiel vorher) wenn das ganze in Kombination mit Stacking sein soll.

          Was Du, falls das nicht ohnehin schon drin ist, probieren kannst wäre bei Query options bei MinInterval 1h oder wie in Deinem obigen Chart 30meinzutragen wenn pro Stunde eh nur ein Wert angezeigt werden soll.
          Screenshot 2025-02-08 225848.png
          Du gibst ja in der Query hier

            |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
          

          keinen festen Zeitrahmen every: v.windowPeriod vor.

          Merlin123M Offline
          Merlin123M Offline
          Merlin123
          schrieb am zuletzt editiert von
          #5

          @wolfi913 Ich glaub, ich hab die Ursache. Aber keine Lösung.

          Es werden pro Stunde X Werte geschrieben. X kann jede Stunde anders sein und für jeden anzuzeigenden Wert.
          Ich protokolliere halt jede Änderung des Datenpunktes.
          Er soll eigentlich den Durchschnittswert für den Zeitraum anzeigen (also in dem Fall für die Stunde).
          Ich hatte in den Query Option die Zahl der Datenpunkte auf 12 gestellt um eine Säule pro Stunde zu bekommen. Dann macht der die Bars aber übereinander. Wenn ich die Zahl nicht vorgebe geht es, aber dann ist das Diagramm halt nicht mehr lesbar....
          Hast Du ne Idee, wie ich das dann machen müsste?

          Screenshot 2025-02-09 002343.png

          Screenshot 2025-02-09 002403.png

          Beta-Tester

          W 1 Antwort Letzte Antwort
          0
          • Merlin123M Merlin123

            @wolfi913 Ich glaub, ich hab die Ursache. Aber keine Lösung.

            Es werden pro Stunde X Werte geschrieben. X kann jede Stunde anders sein und für jeden anzuzeigenden Wert.
            Ich protokolliere halt jede Änderung des Datenpunktes.
            Er soll eigentlich den Durchschnittswert für den Zeitraum anzeigen (also in dem Fall für die Stunde).
            Ich hatte in den Query Option die Zahl der Datenpunkte auf 12 gestellt um eine Säule pro Stunde zu bekommen. Dann macht der die Bars aber übereinander. Wenn ich die Zahl nicht vorgebe geht es, aber dann ist das Diagramm halt nicht mehr lesbar....
            Hast Du ne Idee, wie ich das dann machen müsste?

            Screenshot 2025-02-09 002343.png

            Screenshot 2025-02-09 002403.png

            W Online
            W Online
            wolfi913
            schrieb am zuletzt editiert von
            #6

            @merlin123
            Mach mal

              |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
            

            in die Query. Also das v.windowPeriod durch 1h ersetzen

            Merlin123M 1 Antwort Letzte Antwort
            0
            • W wolfi913

              @merlin123
              Mach mal

                |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
              

              in die Query. Also das v.windowPeriod durch 1h ersetzen

              Merlin123M Offline
              Merlin123M Offline
              Merlin123
              schrieb am zuletzt editiert von Merlin123
              #7

              @wolfi913 Ah... Das sieht schon besser aus.... Mal schauen, ob ich das damit komplett hinbekomme. Das blöde an der Lösung: In meiner alten Version mit Linie konnte ich den anzuzeigenden Zeitraum in der URL mitgeben und habe nur eine Grafik für 4 verschiedene Zeiträume benötigt. Muss mal schauen, ob ich das hier auch machen kann.

              Mal davon abgesehen, dass das aktuell schlecht erkennbar ist ;)
              Ich kann zwar den Timeshift erhöhen, aber dadurch zeigen die Bars halt verschiedene Zeiträume an. Auch nicht im Sinne des Erfinders. Muss da 15 Minuten einstellen, damit die Bars nebeneinander sind :(

              Auf jeden Fall schonmal vielen Dank! :)

              Screenshot 2025-02-09 081438.png

              Beta-Tester

              W 1 Antwort Letzte Antwort
              0
              • Merlin123M Merlin123

                @wolfi913 Ah... Das sieht schon besser aus.... Mal schauen, ob ich das damit komplett hinbekomme. Das blöde an der Lösung: In meiner alten Version mit Linie konnte ich den anzuzeigenden Zeitraum in der URL mitgeben und habe nur eine Grafik für 4 verschiedene Zeiträume benötigt. Muss mal schauen, ob ich das hier auch machen kann.

                Mal davon abgesehen, dass das aktuell schlecht erkennbar ist ;)
                Ich kann zwar den Timeshift erhöhen, aber dadurch zeigen die Bars halt verschiedene Zeiträume an. Auch nicht im Sinne des Erfinders. Muss da 15 Minuten einstellen, damit die Bars nebeneinander sind :(

                Auf jeden Fall schonmal vielen Dank! :)

                Screenshot 2025-02-09 081438.png

                W Online
                W Online
                wolfi913
                schrieb am zuletzt editiert von wolfi913
                #8

                @merlin123 sagte in Bar Chart: Bars nebeneinander?:

                In meiner alten Version mit Linie konnte ich den anzuzeigenden Zeitraum in der URL mitgeben und habe nur eine Grafik für 4 verschiedene Zeiträume benötigt. Muss mal schauen, ob ich das hier auch machen kann.

                Warum solltest Du den Zeitraum in der URL nicht mitschicken können. Der greift doch auf:

                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                

                Und (wie schon ober geschrieben) den timeShift solltest Du normalerweise nicht brauchen.
                Das ist eigentlich nur für spezielle Fälle notwendig.

                Ich vermute mal das Du in den Overrides da was eingestellt hast. Die Balken sollten eigentlich standardmäßig nebeneinander liegen wenn da nichts spezielles eingestellt ist.

                Merlin123M 1 Antwort Letzte Antwort
                0
                • W wolfi913

                  @merlin123 sagte in Bar Chart: Bars nebeneinander?:

                  In meiner alten Version mit Linie konnte ich den anzuzeigenden Zeitraum in der URL mitgeben und habe nur eine Grafik für 4 verschiedene Zeiträume benötigt. Muss mal schauen, ob ich das hier auch machen kann.

                  Warum solltest Du den Zeitraum in der URL nicht mitschicken können. Der greift doch auf:

                    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  

                  Und (wie schon ober geschrieben) den timeShift solltest Du normalerweise nicht brauchen.
                  Das ist eigentlich nur für spezielle Fälle notwendig.

                  Ich vermute mal das Du in den Overrides da was eingestellt hast. Die Balken sollten eigentlich standardmäßig nebeneinander liegen wenn da nichts spezielles eingestellt ist.

                  Merlin123M Offline
                  Merlin123M Offline
                  Merlin123
                  schrieb am zuletzt editiert von
                  #9

                  @wolfi913 Hab jetzt nochmal ein neues Chart angelegt. Da nur auf Bar umgestellt und die zwei Querys als A und B reingemacht:

                    from(bucket: "iobroker")
                    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                    |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.PV_Produktion")
                    |> filter(fn: (r) => r["_field"] == "value")
                    |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
                    
                    from(bucket: "iobroker")
                    |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                    |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.PV_Eigenverbrauch")
                    |> filter(fn: (r) => r["_field"] == "value")
                    |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
                  

                  Stack Series ist auf Off, das kommt raus :(

                  Screenshot 2025-02-09 123447.png

                  Auch wenn ich bei den Query Options als min Intervall 30m oder 1h reinmache ändert das nix.
                  Options sehen ohne eigene Einträge so aus:
                  Screenshot 2025-02-09 123918.png

                  Beta-Tester

                  W 1 Antwort Letzte Antwort
                  0
                  • Merlin123M Merlin123

                    @wolfi913 Hab jetzt nochmal ein neues Chart angelegt. Da nur auf Bar umgestellt und die zwei Querys als A und B reingemacht:

                      from(bucket: "iobroker")
                      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.PV_Produktion")
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
                      
                      from(bucket: "iobroker")
                      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.PV_Eigenverbrauch")
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
                    

                    Stack Series ist auf Off, das kommt raus :(

                    Screenshot 2025-02-09 123447.png

                    Auch wenn ich bei den Query Options als min Intervall 30m oder 1h reinmache ändert das nix.
                    Options sehen ohne eigene Einträge so aus:
                    Screenshot 2025-02-09 123918.png

                    W Online
                    W Online
                    wolfi913
                    schrieb am zuletzt editiert von wolfi913
                    #10

                    @merlin123
                    Da bin ich dann auch ratlos. Vielleicht hat ja jemand anderes noch eine Idee dazu. :man-shrugging:

                    Das, was Du ohnehin schon probiert hast, wäre nämlich noch mein letzter Vorschlag gewesen. Alles in ein neues Panel ohne vorherige Einstellungen zu packen und mal zu schauen was da rauskommt. Also nur Einstellungen Bar Chart und die Query. Sollte eigentlich mit einer klappen wenn Du die vom Anfang nimmst und das v.windowPeriod durch 1h ersetzt. Also so:

                    from(bucket: "iobroker")
                      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                      |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.PV_Produktion" 
                      or r["_measurement"] == "0_userdata.0.PV_Eigenverbrauch" 
                      or r["_measurement"] == "0_userdata.0.PV_Netzbezug" 
                      or r["_measurement"] == "0_userdata.0.PV_Wallbox" 
                      or r["_measurement"] == "0_userdata.0.PV_Nur_Einspeisung")
                      |> filter(fn: (r) => r["_field"] == "value")
                      |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
                    

                    oder wie auch bereits versucht aufgeteilt in mehrere Querys.

                    Warum das bei Deinem Grafana nicht so problemlos klappt und er die Werte einfach in ein Stacking packt und nicht einfach nebeneinander...???
                    Leider gehen mir die Ideen aus. Sorry

                    Merlin123M 1 Antwort Letzte Antwort
                    0
                    • W wolfi913

                      @merlin123
                      Da bin ich dann auch ratlos. Vielleicht hat ja jemand anderes noch eine Idee dazu. :man-shrugging:

                      Das, was Du ohnehin schon probiert hast, wäre nämlich noch mein letzter Vorschlag gewesen. Alles in ein neues Panel ohne vorherige Einstellungen zu packen und mal zu schauen was da rauskommt. Also nur Einstellungen Bar Chart und die Query. Sollte eigentlich mit einer klappen wenn Du die vom Anfang nimmst und das v.windowPeriod durch 1h ersetzt. Also so:

                      from(bucket: "iobroker")
                        |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                        |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.PV_Produktion" 
                        or r["_measurement"] == "0_userdata.0.PV_Eigenverbrauch" 
                        or r["_measurement"] == "0_userdata.0.PV_Netzbezug" 
                        or r["_measurement"] == "0_userdata.0.PV_Wallbox" 
                        or r["_measurement"] == "0_userdata.0.PV_Nur_Einspeisung")
                        |> filter(fn: (r) => r["_field"] == "value")
                        |> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
                      

                      oder wie auch bereits versucht aufgeteilt in mehrere Querys.

                      Warum das bei Deinem Grafana nicht so problemlos klappt und er die Werte einfach in ein Stacking packt und nicht einfach nebeneinander...???
                      Leider gehen mir die Ideen aus. Sorry

                      Merlin123M Offline
                      Merlin123M Offline
                      Merlin123
                      schrieb am zuletzt editiert von
                      #11

                      @wolfi913 Hab es nochmal mit nem neuen und einer "großen" Query probiert, leider selber Effekt :(

                      Dank Dir trotzdem für Deine Hilfe!

                      Beta-Tester

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      363

                      Online

                      32.4k

                      Benutzer

                      81.5k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe