Skip to content

Diagramm (Verteilung)

Anteilige Darstellung beliebig vieler Gruppen aus mehreren Datenpunkten — als 100-%-Balken, Torte oder Donut. Jeder Eintrag wird über einen Verlaufs-Adapter auf eine Zahl im gemeinsamen Zeitraum reduziert; die Gruppe zeigt die Anteile daran.

Datenpunkt

Das Widget hat keinen eigenen Haupt-Datenpunkt — jeder Eintrag trägt seinen Datenpunkt selbst.

FeldPflicht
bars[].entries[].datapointIdjaDatenpunkt des Eintrags
bars[].entries[].historyInstanceneinVerlaufs-Adapter; leer = aus common.custom erkannt, sonst Live-Wert

Layouts

Ein Layout (default); die Darstellung steuert chartStyle.

Balken

100-%-Balken je Gruppe — mehrere Gruppen stehen nebeneinander, z. B. Erzeugung gegen Verbrauch.

Torte / Donut

Kreis je Gruppe. Der Donut zeigt zusätzlich die Gruppensumme in der Mitte.

Einstellungen

Alle Optionen werden im Editor unter Widget bearbeiten gesetzt.

Gruppen

OptionStandard
bars[]Liste der Gruppen — jede Gruppe ist ein Balken bzw. ein Kreis
bars[].titleTitel über der Gruppe
bars[].legendSidebelowLegende dieser Gruppe: left · right · top · below
bars[].entries[]Einträge der Gruppe (siehe unten)

legendSide je Gruppe ist die Grundlage des zweiseitigen Bilanz-Layouts: linke Gruppe left, rechte Gruppe right. Ein global gesetztes legendSide gewinnt über die Gruppen-Angabe.

Vorgabe (100 %)

Ohne Vorgabe ist die Gruppensumme 100 %. Mit Vorgabe zeigen die Einträge ihren Anteil daran, und die Differenz erscheint als eigenes Segment — so wird aus der Verteilung eine Verbrauchsanzeige („147,12 € von 160 € Abschlag“).

OptionStandard
bars[].totalDatapointDatenpunkt mit der 100-%-Vorgabe; gewinnt über totalValue
bars[].totalValuefeste 100-%-Vorgabe ohne Datenpunkt
bars[].showResttrueDifferenz als eigenes Segment anzeigen
bars[].restLabelRestBezeichnung des Rest-Segments in der Legende
bars[].restColor#94a3b8Farbe des Rest-Segments

Die Vorgabe wird immer als aktueller Wert gelesen (wie aggregate: last), nicht über den Zeitraum aggregiert. Über der Vorgabe bleibt die Gruppe bei 100 %, der Rest verschwindet, und die Summenzeile nennt weiter den echten Anteil (184,00 / 160,00 € · 115 %). Beim Donut steht der Anteil in der Mitte.

Warnfarbe

Weil die Gruppe über der Vorgabe schlicht voll bleibt, sieht ein gerissenes Budget aus wie ein eingehaltenes. Ab der Schwelle wechseln Segmente, Tortenstücke und Legenden-Farbtupfer auf die Warnfarbe; das Rest-Segment behält seine eigene.

OptionStandard
bars[].overActivefalseFarbwechsel einschalten
bars[].overThreshold100Anteil an der Vorgabe in %, ab dem gewechselt wird
bars[].overColor#ef4444Warnfarbe der Einträge

Erreichen zählt wie Überschreiten (>=). Ohne Vorgabe bleibt der Wechsel wirkungslos.

Eintrag

OptionStandard
entries[].labelBezeichnung in der Legende
entries[].iconLucide-Icon, z. B. Sun
entries[].colorPaletteFarbe von Segment und Legendenzeile
entries[].unitunit des WidgetsEinheit nur für diesen Eintrag
entries[].decimalsdecimals des WidgetsNachkommastellen nur für diesen Eintrag
entries[].numberFormatglobal1000er-Trennzeichen
entries[].aggregatelastsiehe Tabelle unten

Aggregation

Jeder Eintrag wird auf einen Wert im gemeinsamen Zeitraum reduziert.

Wert
lastLetzter Wertaktueller Wert des Datenpunkts — ohne Verlaufs-Abfrage
deltaDifferenz (Ende − Start)nur für fortlaufende Zähler
consumptionVerbrauch/Ertrag (Zuwachs)summiert den Zuwachs im Zeitraum — auch für Tageszähler, die um Mitternacht auf 0 zurückspringen
sumSummefür Datenpunkte, die schon Zuwächse loggen
averageDurchschnittMittelwert über den Zeitraum
max / minMaximum / MinimumExtremwert im Zeitraum

Ohne Verlaufs-Adapter ist kein Zeitraum-Bezug möglich — der Eintrag zeigt dann den aktuellen Wert, wie bei last.

Tageszähler

sourceanalytix.*.01_currentDay, PV-Tagesertrag und ähnliche Zähler springen um Mitternacht auf 0. delta vergleicht dort den angefangenen Tag mit dem abgeschlossenen Vortag und wird negativ — für solche Datenpunkte consumption wählen. Bei fortlaufenden Zählern liefern beide dasselbe Ergebnis. Liegt der Zeitraum auf Tagesgrenzen, ist consumption genau die Summe der Tageswerte.

Darstellung

OptionStandard
chartStylebarsbars · pie · donut
barWidth46Balkenbreite in px (nur bars)
barDirectiondownStapelrichtung (nur bars): down = erster Eintrag oben, up = erster Eintrag unten
pieSize160Durchmesser in px (nur pie/donut)
unitkWhEinheit für alle Werte und Summen
decimalsglobale EinstellungNachkommastellen
showTitletrueWidget-Titel
showBarTitlestrueTitel je Gruppe
showTotalstrueSumme je Gruppe unter dem Titel
barTitleAligncenterleft · center · right
showPercenttrueProzent-Label im Segment
showSegmentIconfalseIcon zusätzlich im Segment
showOutsidePercenttrueProzente zu kleiner Segmente außen an einer Fahne (Torte/Donut)
showLegendtrueLegende anzeigen
legendSideje Gruppeleft · right · top · below — gilt für alle Gruppen
legendAlignaus der Positionleft · center · right
legendFormaticon-valuevalue · icon-value · label · label-value · icon-label-value

Zeitraum

Ein gemeinsamer Zeitraum für alle Gruppen und Einträge.

OptionStandard
range24h1h · 6h · 24h · 7d · 30d · custom
rangeCustomValue24nur bei custom
rangeCustomUnithh · d, nur bei custom
visibleRangesalle PresetsWelche Presets der Frontend-Umschalter anbietet
lockRangefalseUmschalter im Frontend ausblenden

Beispiele

Alle Bilder zeigen denselben simulierten Haushalt: PV-Anlage, Hausspeicher, Wallbox und Grundlast, protokolliert als sieben Zählerstände (demo.0.PV.Erzeugung_kWh, demo.0.Speicher.Ladung_kWh …). Jede kWh ist auf beiden Seiten gebucht, deshalb sind die Summen der zwei Gruppen gleich.

Energiebilanz — zwei Gruppen

chartStyle: bars · je Eintrag aggregate: delta · legendSide links left, rechts right · showSegmentIcon: true — siehe Bild oben.

Torte

chartStyle: pie · pieSize: 190 · legendSide: right · legendFormat: icon-label-value. Das 4-%-Segment ist zu klein für ein Label im Kreis und wird außen angeschrieben (showOutsidePercent):

Donut

Gleiche Konfiguration mit chartStyle: donut — die Gruppensumme steht in der Mitte:

Legende unten, mit Bezeichnungen

legendSide: below · legendAlign: center · legendFormat: label-value · showSegmentIcon: false:

Zeitraum im Frontend

lockRange: false · visibleRanges: ["24h","7d","30d"] — dieselbe Konfiguration, umgeschaltet auf 24 Std bzw. 30 Tage. Mit dem Zeitraum wachsen die Werte, und die Anteile verschieben sich (die Wallbox lädt nicht jeden Tag):

Anteile, die keine Energie sind

aggregate: last · unit: % · showTotals: false — zwei Datenpunkte (belegt / frei) als Speicherbelegung:

Bilder neu erzeugen

node tools/screenshots/verteilung-examples.mjs gegen einen laufenden npm run dev. Die Daten stammen aus einer Haushalts-Simulation im Skript (fester Zeitpunkt, fester Zufallsgenerator), es wird keine Instanz gelesen oder geschrieben.