Hallo Rudi,
gibt es eine einfache Möglichkeit (die ich nur noch nicht gefunden habe), die Formatierung der Beschriftung der y-Achse anzupassen?
Im angehängten Screenshot wäre es schöner, wenn da 1.20 und 1.30 stehen würde anstatt 1.2 und 1.3.
Die Werte sind nicht als tics vorgegeben, sondern werden automatisch berechnet.
Nein, in Zeile 1907 steht
my $txt = sprintf("%g", $i);
damit ist das Format fest. Wenn du eine Idee hast...
Zitat von: rudolfkoenig am 06 Juni 2018, 13:22:46
Wenn du eine Idee hast...
ich denke mal drüber nach 8)
Spontan fällt mir ysprintf als optionaler Parameter im gplot File ein, dann könnte man das sogar für jede y-Achse getrennt setzen.
Das funktioniert bei mir im Testbetrieb:
--- code entfernt wegen aktueller Überarbeitung --- (19:00 Uhr)
set ytics
set ylabel "links"
set ysprintf %03d
Was ich nicht getestet habe, ist der Betrieb mit mehr als 2 y-Achsen. Aber werden mehr als zwei Achsen überhaupt beschriftet?
Zitat von: betateilchen am 06 Juni 2018, 15:03:48
Was ich nicht getestet habe, ist der Betrieb mit mehr als 2 y-Achsen. Aber werden mehr als zwei Achsen überhaupt beschriftet?
Ja, werden sie. auch 2 links zwei rechts. (angehängt)
ok, dann muss man vermutlich im ersten Teil einfach den Zähler anpassen.
Und man könnte das Ganze noch dadurch "schön" machen, dass man das Ganze auch noch als perl evaluiert, um selbst den Formatierungsstring noch "berechnen" zu lassen.
Aber Rudi wollte ja auch nur eine Idee haben :)
verbesserter patch-Vorschlag...
Index: 98_SVG.pm
===================================================================
--- 98_SVG.pm (revision 16823)
+++ 98_SVG.pm (working copy)
@@ -1503,6 +1503,15 @@
SVG_pO "<text x=\"$off1\" y=\"$off2\" text-anchor=\"middle\" " .
"class=\"y2label\" transform=\"rotate(270,$off1,$off2)\">$t</text>";
}
+
+ ######################
+ # use sprintf for y tics
+ for my $idx ($use_left_axis+1..$use_left_axis+$use_right_axis) {
+ my $name = "y".($idx)."sprintf";
+ $name = "ysprintf" if( $idx == 1 );
+ $conf{$name} //= "%g";
+ }
+
}
######################
@@ -1882,6 +1891,8 @@
}
#-- tics automatically
} elsif( $hstep{$a}>0 ) {
+ my $n = 'y'.($axis).'sprintf';
+ $n = 'ysprintf' if ($axis == 1);
for(my $decimal = 0;
$decimal < ($log eq 'log'?SVG_log10($hmax{$a}):1);
$decimal++ ) {
@@ -1904,7 +1915,7 @@
}
$off2 += $th/4;
#-- text
- my $txt = sprintf("%g", $i);
+ my $txt = sprintf($conf{$n}, $i);
SVG_pO
"<text x=\"$off1\" y=\"$off2\" class=\"ylabel\"$align>$txt</text>";
}
Habe den Patch etwas vereinfacht eingecheckt, bitte pruefen, ob noch alles funktioniert.
Zusammenfassug: mit folgender Zeile in der .gplot Datei:
set ysprintf %0.2f
(bzw. y2sprintf fuer die anderen Achsen) kann man die Formatierung der automatisch berechneten Werte auf der Y-Achsen beeinflussen, Argument ist eine sprintf Formatanweisung, sprintf kriegt als zweiten Parameter den numerischen Wert auf der y-Achse.
Achtung: diese Konfiguration geht beim Speichern durch den Plot-Editor verloren.
Zitat von: rudolfkoenig am 07 Juni 2018, 12:25:59
Habe den Patch etwas vereinfacht eingecheckt
An der Stelle, wo Du das jetzt eingebaut hast, hatte ich das im ersten Versuch auch. Das funktioniert zwar, allerdings wird dadurch innerhalb der loop für jeden einzelnen tic auf der y-Achse der sprintf-Formatstring erneut ermittelt, obwohl sich dieser auf einer Achse überhaupt nicht mehr ändert.
Deshalb hatte ich die Ermittlung des Formatstring in meinem Vorschlag direkt nach das elsif hochgeschoben. Dadurch erfolgt diese pro Achse nur einmal.