Autor Thema: Min/Max/Last in Legende bei mehreren Linien  (Gelesen 1570 mal)

Offline ocin4

  • New Member
  • *
  • Beiträge: 14
Min/Max/Last in Legende bei mehreren Linien
« am: 20 August 2022, 23:35:38 »
Hallo,

ich hab einen SVG-Plot, in dem aktuell 8 Temperaturen dargestellt werden. Mir würde gefallen, wenn die Max-/Min-/Last-Werte nicht nur im Tootip sondern in direkt in der Legende dargestellt werden können. Für einen Wert bekomm ich das über das attr "label" hin, für den zweiten könnte ich evtl. noch "title" missbrauchen, aber für die restlichen 6 Werte bekomm ich da nicht hin. $data{min1} funktioniert im Label nicht.

[Anmerkung nebenbei zu uneinheitlicher Bezeichnung: im gplot-File steht "title" als Beschriftung der Legende, im SVG-Editor steht "Diagram label, Source", das macht die Suche nach Lösungen im Netz auch schwieriger...]

Gibt's eine Möglichkeit, mehrzeilige Legenden mit Werten zu füllen?

Hier das gplot-File:
# Created by FHEM/98_SVG.pm, 2022-08-20 23:23:56
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Temperatur'
set ytics
set y2tics
set grid ytics y2tics
set ylabel ""
set y2label ""

#fhemDbLog MQTT2_inFactory_TH_42:temperature_C::
#fhemDbLog MQTT2_inFactory_TH_248:temperature_C::
#fhemDbLog MQTT2_inFactory_TH_251:temperature_C::
#fhemDbLog MQTT2_inFactory_TH_153:temperature_C::
#fhemDbLog MQTT2_inFactory_TH_154:temperature_C::
#fhemDbLog MQTT2_inFactory_TH_16:temperature_C::
#fhemDbLog MQTT2_inFactory_TH_52:temperature_C::
#fhemDbLog MQTT2_inFactory_TH_6:temperature_C::

plot "<IN>" using 1:2 axes x1y1 title '<L1>' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title '"Wäscheboden: Min $data{min1}, Max $data{max1}, Last $data{currval1}"' ls l6 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Arbeitszimmer' ls l5 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'WC oben' ls l7 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Schlafzimmer' ls l3 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Küche' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Wohnzimmer' ls l8 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Keller' ls l0 lw 1 with lines

Danke im Voraus!
Nico

Offline OdfFhem

  • Hero Member
  • *****
  • Beiträge: 1369
Antw:Min/Max/Last in Legende bei mehreren Linien
« Antwort #1 am: 21 August 2022, 10:28:33 »
@ocin4

Das Attribut "label" ist deprecated, sollte also eher nicht mehr genutzt werden - stattdessen das Attribut "plotReplace".

Definition beispielhafter Platzhalter T,L1,L2 im plotReplace-Attribut
attr SVG_irgendwas plotReplace L1={"#1 ... $data{min1}"} L2={"#2 ... $data{max2}"} T={"#1 ... $data{min1} --- #2 ... $data{max2}"}
Die Namen der Platzhalter sind frei wählbar.
Neben Perl-Blöcken können Platzhalter auch reinen Text festlegen ... T="nur ein Titeltext"

Verwendung der beispielhaften Platzhalter T,L1,L2 in der .gplot-Datei
set title '<T>'

plot "<IN>" using 1:2 axes x1y2 title '<L1>' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title '<L2>' ls l2 lw 1 with steps

Offline ocin4

  • New Member
  • *
  • Beiträge: 14
Antw:Min/Max/Last in Legende bei mehreren Linien
« Antwort #2 am: 21 August 2022, 11:54:01 »
Super Sache, das hat funktioniert. Danke!

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18888
Antw:Min/Max/Last in Legende bei mehreren Linien
« Antwort #3 am: 21 August 2022, 12:50:12 »
Die Namen der Platzhalter sind frei wählbar.

... fast frei wählbar. Bei TL muss man aufpassen, da können u.U. verwirrende Effekte auftreten.

Außerdem sollte noch darauf hingewiesen sein, dass sowohl <Platzhalter> als auch %Platzhalter% möglich ist.
Damit kann bestimmt werden, WANN der Wert ersetzt werden soll.
Näheres siehe commandref zu SVG.
-----------------------
Mach es möglichst simpel und mach es richtig,
dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

 

decade-submarginal