[Gelöst] SVG: Vorschlag für alternative Darstellung - "needles"

Begonnen von didi-fritz, 07 März 2024, 17:05:15

Vorheriges Thema - Nächstes Thema

didi-fritz

ich möchte die Tageswerte meiner PV-Anlagen vergleichen und hab keine vernünftige Darstellung (lines bars points steps ibars ...) in den Plots gefunden.

ich hab nun 98_SVG.pm leicht abgeändert und hab mir "needes" (= bars mit breite 1) gebaut.
Du darfst diesen Dateianhang nicht ansehen.
was haltet ihr davon?

98_SVG.pm
line 495
    $o .= SVG_sel("type_${idx}",
                "lines,points,steps,fsteps,histeps,bars,ibars,needles,".
                "horizontalLineFrom,horizontalLineTo,".
                "cubic,quadratic,quadraticSmooth",
                $conf{lType}[$idx]);

einfügen line 2075
    } elsif( $lType eq "needles" ) {
      my $bw = 1;
      # bars are all of equal width (see far above !),
      # position rounded to integer multiples of bar width
      foreach my $i (0..int(@{$dxp})-1) {
        my ($x1, $y1) = ( $x + $dxp->[$i] - $bw,
                           $y +$h-($dyp->[$i]-$min)*$hmul);
        my $curBw = $bw;
        if($x1 < $x) {
            $curBw -= $x - $x1;
            $x1 = $x;
        }
        my ($x2, $y2) = ($curBw, ($dyp->[$i]-$min)*$hmul);
        SVG_pO "<rect $attributes $lStyle x=\"$x1\" y=\"$y1\" ".
                    "width=\"$x2\" height=\"$y2\"/>";
      }

Aurel_B

Super, bin begeistert  ;D Ich kenne das Problem vom Vergleichen verschiedener Tageswerte und fand die bisherigen Lösungen auch suboptimal (transparente Bars etc).

rudolfkoenig

Habe die Funktionalitaet hinzugefuegt.
Da (soweit ich es beurteilen kann) der Kode eine Kopie von bars mit eine Zeile Aenderung ist, habe ich ihn etwas vereinfacht.


Aurel_B

Super, ebenfalls danke von mir. Leider klappt das bei mir so nicht direkt, die "needles" überlagern sich (was glaub ich Sinn macht weil ich alle Daten zum gleichen Zeitpunkt geloggt habe). Wie hast du das so schön hinbekommen bei deinem Graph? Also dass die Needles nebeinander sind?

Du darfst diesen Dateianhang nicht ansehen.

didi-fritz

du musst die plots mit dem LogProxy-offset verschieben

#LogProxy FileLog:fl_pv_daily,offset=-3600*14:8:PlenticoreLogDay:0:$fld[7]/5.04
#LogProxy FileLog:fl_PvGriesslerWeg_daily,offset=-3600*10:4:PvGriesslerWeg_day.T\x3a:0:$fld[3]/0.840
#LogProxy FileLog:fl_pvCarport_daily,offset=-3600*6:8:PvCarportLogDay.*T\x3a:0:$fld[7]/340
#LogProxy FileLog:fl_simon_daily,offset=-3600*2:4:WrSimon_day.T\x3a:0:$fld[3]/0.150
#LogProxy ConstY:3.044

plot "<IN>" using 1:2 axes x1y1 title 'Piko'          ls l1 lw 2.5 with needles,\
     "<IN>" using 1:2 axes x1y2 title 'Griesslerweg'  ls l4 lw 2.5 with needles,\
     "<IN>" using 1:2 axes x1y2 title 'Carport'       ls l7 lw 2.5 with needles,\
     "<IN>" using 1:2 axes x1y2 title 'Simon'         ls l6 lw 2.5 with needles,\
     "<IN>" using 1:2 axes x1y2 title 'Jahresschnitt' ls l5dot lw 1.5 with lines

Aurel_B

Super, danke dir

Edit: sehr schick aus, I love it, danke euch für die rasche Umsetzung!

Du darfst diesen Dateianhang nicht ansehen.