Ploteditor: Bug bei mehr als 16 Einträgen?

Begonnen von mahowi, 12 Januar 2016, 10:06:37

Vorheriges Thema - Nächstes Thema

mahowi

Hallo,

ich habe folgende Plotdatei:
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 '<L1>'
set ytics
set y2tics
set ylabel "Mbit/s"
set y2label "ms"
set yrange [0:]
set y2range [0:]

#lp FileLog:FileLog_speedtest:4:speedtest.download\x3a::
#lp FileLog:FileLog_speedtest:4:speedtest.upload\x3a::
#lp FileLog:FileLog_speedtest:4:speedtest.ping\x3a::
#lp ConstY:$data{avg1}
#lp ConstY:$data{avg2}
#lp ConstY:$data{avg3}
#lp ConstX:$data{mindate1},$data{min1}
#lp ConstX:$data{maxdate1},$data{max1}
#lp ConstX:$data{mindate1},$data{min1},$data{avg1}
#lp ConstX:$data{maxdate1},$data{max1},$data{avg1}
#lp ConstX:$data{mindate2},$data{min2}
#lp ConstX:$data{maxdate2},$data{max2}
#lp ConstX:$data{mindate2},$data{min2},$data{avg2}
#lp ConstX:$data{maxdate2},$data{max2},$data{avg2}
#lp ConstX:$data{mindate3},$data{min3}
#lp ConstX:$data{maxdate3},$data{max3}
#lp ConstX:$data{mindate3},$data{min3},$data{avg3}
#lp ConstX:$data{maxdate3},$data{max3},$data{avg3}

plot "<IN>" using 1:2 axes x1y1 title 'download (Mbit/s)' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'upload (Mbit/s)' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'ping (ms)' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 notitle ls l0 lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y1 notitle ls l1 lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y2 notitle ls l2 lw 0.5 with lines,\
     "<IN>" using 1:2 axes x1y1 notitle ls l0 lw 1 with points,\
     "<IN>" using 1:2 axes x1y1 notitle ls l0 lw 1 with points,\
     "<IN>" using 1:2 axes x1y1 notitle ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 notitle ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 notitle ls l1 lw 1 with points,\
     "<IN>" using 1:2 axes x1y1 notitle ls l1 lw 1 with points,\
     "<IN>" using 1:2 axes x1y1 notitle ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 notitle ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 notitle ls l2 lw 1 with points,\
     "<IN>" using 1:2 axes x1y2 notitle ls l2 lw 1 with points,\
     "<IN>" using 1:2 axes x1y2 notitle ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 notitle ls l2 lw 1 with lines


Wie man sieht, stehen da 18 Einträge zum Plotten ("#lp..."), im Ploteditor werden aber nicht alle angezeigt. Hier wird als letztes #lp ConstX:$data{maxdate3},$data{max3} korrekt dargestellt, die beiden folgenden werden ausgelassen. Stattdessen kann man unten Type und Spec nicht mehr eingeben. Im Anhang ist ein Screenshot des Ploteditors.

Das ist meiner Meinung nach ein Bug im Ploteditor, da ich mir beim Speichern meine .gplot zerschieße.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

rudolfkoenig

Da mAn mehr als 16 Linien in einem Plot keiner auseinanderhalten kann, ist das ein Feature.
Es sei denn, jemand liefert einen Patch.

betateilchen

Zitat von: rudolfkoenig am 12 Januar 2016, 10:40:14
Da mAn mehr als 16 Linien in einem Plot keiner auseinanderhalten kann, ist das ein Feature.

Da bin ich voll bei Dir. Aber dieses Feature ist offenbar (habe nur kurz gesucht) nirgends dokumentiert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

mahowi

Zitat von: rudolfkoenig am 12 Januar 2016, 10:40:14
Da mAn mehr als 16 Linien in einem Plot keiner auseinanderhalten kann, ist das ein Feature.
Es sei denn, jemand liefert einen Patch.
Da geb ich Dir ja recht. Aber ich plotte ja eigentlich nur 3 Linien, den Rest benötige ich für Darstellung von Min- und Max-Werten mit Logproxy. (siehe Anhang)

Das ist sicherlich kein Fall, der oft vorkommt. Ich bin auch eher zufällig beim Experimentieren mit Plots darüber gestolpert.

Ist irgendwo dokumentiert, daß es eine maximale Anzahl an zu plottenden Linien gibt?
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

betateilchen

Zitat von: mahowi am 12 Januar 2016, 11:06:37
Ist irgendwo dokumentiert, daß es eine maximale Anzahl an zu plottenden Linien gibt?

Ja. Seit heute, 10:40:14 Uhr, hier im Thread  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig


mahowi

 ;D
Na gut. Ich konnte in der 98_SVG.pm aber so auf die Schnelle keine Begrenzung finden. Nur interessehalber, wo könnte ich die denn finden?
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

rudolfkoenig

Habs auf die Schnelle auch nicht gefunden, deswegen ist das jetzt ein Feature.

tobox

Also diese Art der Softwareentwicklung ist meiner Meinung nach ein Grund, warum FHEM oft als Nerd-Bastellösung angesehen wird...

Ein bekannter Fehler wird nicht behoben und nicht dokumentiert.

Im Anhang der (wunderbar funktionierende) Plot, den mir der Ploteditor bei jeder Änderung zerschießt.

Ich schaue mal im Code nach, ob sich die Begrenzung auf 16 nicht irgendwo trivial erhöhen lässt.


rudolfkoenig

Man kann es auch anders sehen: solche Art von Bemerkungen sind der Grund, warum FHEM lieber eine Nerd-Bastelloesung bleiben sollte.

tobox

Als Nicht-Perl-Programmierer hat es etwas gedauert, bis ich die richtige Stelle gefunden habe... 

In der Datei 98_logProxy.pm gibt es die Funktion logProxy_sampleDataFn($$$$$)

Dort habe ich das Maximum bei mir von 16 auf 32 hochgesetzt, jetzt wird zumindest nichts mehr zerschossen.

  $max = 16 if($max > 16);

geändert in:

  $max = 32 if($max > 32);