Statistics graph card - X-Achse

Moin,

ich probiere gerade mal die unterschiedliche Möglichkeite aus, mir Daten grafisch anzeigen zu lassen. gerade teste ich mal die Statistics graph card:

Für den stündlichen und täglichen Niederschlag sieht das ja noch ganz gut aus.

Bei dem wöchentlichen und monatlichen Niederschlag ist die X-Achse nicht gerade sinnvoll und hilfreich. ich habe auch in den Docs keine Möglichkeit gefunden, dass anzupassen.

wie bereitet ihr wöchentliche/Monatliche Daten grafisch auf ?

Die X-Achse kannst Du leider nicht anpassen. Finde ich aber nicht so tragisch.
Jeder Balken repräsentiert eine Woche, Montag, etc.
Fährst Du mit der Maus drüber, wird Dir der Zeit Raum angegeben. Bei monatlich der Monat und bei wöchentlich das Datum Montag einer jeden Woche.

Gruß Osorkon

@Osorkon ja, man kann es natürlich anhand des Datums erkennen…

Mit Apex Chart und etwas Java Script bekmmt man das auch so hin:

Zugegeben - es läuft nicht 100% stabil, aber ist schon extrem flexibel.
Habs mit Hilfe von ChatGPT hinbekommen.

Hier mal als Beispiel der Code für ‚Regen pro Woche‘ :slight_smile:

type: custom:apexcharts-card
header:
  show: true
  title: Regen pro Woche (mm)
graph_span: 7weeks
span:
  start: week
  offset: "-7weeks"
update_interval: 30s
apex_config:
  chart:
    type: bar
    toolbar:
      show: false
  plotOptions:
    bar:
      horizontal: false
      columnWidth: 60%
  dataLabels:
    enabled: true
    formatter: |
      EVAL:function(val) { return val ? val.toFixed(1) + ' mm' : ''; }
  xaxis:
    tickAmount: 8
    labels:
      show: true
      rotate: -45
      formatter: |
        EVAL:function (timestamp) {
          const d = new Date(timestamp);
          // ISO-8601-Kalenderwoche berechnen (Montag = Wochenbeginn)
          d.setHours(0, 0, 0, 0);
          // Donnerstag der aktuellen Woche finden
          d.setDate(d.getDate() + 3 - ((d.getDay() + 6) % 7));
          // 1. Donnerstag des Jahres ermitteln
          const firstThursday = new Date(d.getFullYear(), 0, 4);
          // KW berechnen (ISO 8601)
          const week = 1 + Math.round(
            ((d - firstThursday) / 86400000 - 3 + ((firstThursday.getDay() + 6) % 7)) / 7
          );
          return 'KW' + week;
        }
  yaxis:
    title:
      text: mm
series:
  - entity: sensor.regenmenge3_woche
    name: Wochensumme
    type: column
    color: "#00BCD4"
    float_precision: 2
    group_by:
      duration: 1week
      func: last
      start_with_last: true
      fill: last

Die Apex Card ist mir viel zu kompliziert.
Außerdem hat diese bei mir in der Vergangenheit zu Problemen geführt. Seit dem nutze ich sie nicht mehr.

Gruß Osorkon