Abweichungen pro Tag als Balken in Gewichtsgrafik anzeigen

anleitung
howto
grafana

#1

Frage

@peterthiemer fragte mich gerade, wie man die schönen Tagesdifferenzen macht, die als Balken zusätzlich zum normalen Liniendiagramm des Gewichts, etwa hier angezeigt werden:

Toll finde ich die Gewichtsprotokoll von Freiland Potsdam, wo die negativen und positiven Veränderungen angezeigt werden.


#3

Anleitung

Vorbereitung

Zuerst sollte man das automatisch angelegte dashboard unter anderem Namen nochmals speichern.

In unserem Fall gehe ich auf das dashboard mit dem Namen

hiveeyes open-hive-peter automatic

und gehe über die dashboard-Konfiguration (bei Grafana am oberen Rand das Zahnrad-Icon) und wähle dort dann in der linken Spalte “save as” (aus unerfindlichen Gründen geht das nicht über den normalen “save”-Dialog mit dem Disketten-Icon) hier wähle ich als Namen z.B.

Open Hive: Peter

Panel bearbeiten

Im neuen Dashboard gehe ich nun beim Panel mit den Gewichtsdaten auf edit

Datenbankabfrage definieren

… nach dem Wechsel auf die Karteikarte “Metrics” wähle ich “Add Query”. Bei “FROM” trage ich nun die gleiche Datenbank / “Tabelle” wie beim Gewicht ein, bei SELECT als field “Gewicht” oder “weight” - je nachdem wie es benannt wurde. mean() löscht man und trägt statt dessen als Selector “last()” ein, dann als weiteres Feld Transformation “derivative” und gibt händisch als Intervall 1d ein. In der nächsten Zeile gibt man bei GROUP BY ebenfalls 1d ein.

Weitere Einstellungen vornehmen

Nun geht man zurück aufs dashboard (Icon ganz oben rechts) und sieht nun schon eine zweite Linie, die wollen wir aber noch als Balken haben und mit einer zweiten y-Achse, die eine andere (geringere) Skalierung hat: Das Ganze kann man über das tab “Display” einstellen, dort generiert man eine Ausnahme unter “Series override” und zwar sollen für die Differenzen Balken (bars) statt Linien angezeigt werden und eben die zweite y-Achse, die wir vorher unter “Axes” noch aktivieren müssen.

Nachtrag: @weef weist noch darauf hin, dass es sich anbietet, die metric der Balken mit display / series overrides mittels “Z-index -1” hinter die Linie zu setzen, damit die Balken nicht willkürlich partiell die Linie überdecken. Beispiel hier (Peter): Grafana

Et voilà


Neues Dashboard für imkerliche Daten / New dashboard for beekeepers
#4

Vielen Dank für die ausführliche Beschreibung!


#5

Wollte noch darauf hinweisen, daß @thias und @einsiedlerkrebs verschiedene Verfahren für die Differenzbalken verwenden:

  • thias’ Variante nutzt derivative(last("weight"), time) , und
  • einsiedlerkrebs nimmt difference(mean("weight"))

Beide fassen die Werte dann zusammen GROUP BY time(time), nicht als Variable, sondern explizit, z.B 30m oder 1d. Hier mal beide Verfahren zum Vergleich, gruppiert zu 1d, auf den selben Daten (Daten von @mhies) - hellgrün: difference, dunkelgrün: derivative

(ani-gif)

Der Effekt ist, daß unterschieden wird, z.B. bei 1d-grouping, welchem Tag ein Saldo zugeschrieben wird, da die linke obere Ecke des Balken immer links beim Beginn der entsp. Zeiteinheit anfängt (er läßt sich auch nicht anders positionieren). Man sieht dies gut am 30.3. aufgrund des Zuwachses in der zweiten Tageshälfte. Der Saldo beider Tabellen ist daher auch nicht ganz identisch, da vom letzten Zeitraum links und in dem angrenzenden Zeitraum rechts immer etwas ‘fehlt’ bzw. dazugeschlagen wird.

Was man nun verwendet, hängt von Geschmack und Vorlieben ab (außer, es erklärt jemand, daß eine Variante davon mathematisch Blödsinn ist). Stellt sich die Frage, was davon wir bei den automatic dashboards anlegen wollen…

Das ‘Problem’ haben wir bei den Wetterdaten auch gerade, z.B. bei nur täglich gelieferten Werten, die zur Tagesmitte kommen…


Neues Dashboard für imkerliche Daten / New dashboard for beekeepers
#6

Ich würde für konstante Werte pro Tag plädieren, das andere ist zwar kein mathematischer Blödsinn aber aus Usability-Gründen denke ich ist die Erwartungskonformität, dass sich Differenzen pro Tag nicht nach einem Tag wieder ändern.