Library: implement generation of a simple data visualisation
CSV data -> Gnuplot script
This commit is contained in:
parent
db0838ddcc
commit
a6084bd2d6
3 changed files with 235 additions and 69 deletions
|
|
@ -35,52 +35,28 @@
|
|||
|
||||
|
||||
#include "lib/text-template.hpp"
|
||||
#include "lib/text-template-gen-node-binding.hpp"
|
||||
#include "lib/gnuplot-gen.hpp"
|
||||
#include "lib/format-util.hpp"
|
||||
|
||||
#include <string>
|
||||
|
||||
using std::string;
|
||||
|
||||
using util::join;
|
||||
using lib::diff::MakeRec;
|
||||
|
||||
|
||||
namespace lib {
|
||||
namespace gnuplot_gen {
|
||||
namespace {
|
||||
|
||||
namespace { // Template and defaults definitions for diagram generation
|
||||
|
||||
const string GNUPLOT_SCATTER_REGRESSION = R"~(#
|
||||
#
|
||||
#
|
||||
|
||||
set term wxt size 600,800
|
||||
|
||||
set datafile separator ",;"
|
||||
|
||||
$RunData << _End_of_Data_
|
||||
"graph length";"duration (ms)";"concurrency";"job time"
|
||||
49, 24.3764, 5
|
||||
5 , 4.30955, 5, 700
|
||||
32, 16.039 , 5, 740
|
||||
20, 6.47043, 4, 930
|
||||
39, 19.424 , 4, 888
|
||||
49, 15.951 , 4, 688
|
||||
51, 32.7247, 5, 1200
|
||||
62, 31.4712, 5, 812
|
||||
15, 13.552 , 4
|
||||
56, 36.1978, 4
|
||||
32, 16.4677, 5
|
||||
57, 22.2576, 6, 833
|
||||
17, 14.3244, 5, 844
|
||||
54, 27.4692, 5
|
||||
46, 12.4055
|
||||
52, 19.9593
|
||||
39, 19.4265
|
||||
41, 22.0513
|
||||
64, 33.744
|
||||
2, 3.04284
|
||||
_End_of_Data_
|
||||
|
||||
|
||||
set style line 1 linetype 1 linewidth 2 linecolor rgb '#1700D4'
|
||||
set style line 2 linetype 3 linewidth 2 linecolor rgb '#113DD6'
|
||||
|
||||
const string GNUPLOT_CommonStyleDef = R"~(#
|
||||
#---common-styles-for-plots-from-Lumiera----
|
||||
set style line 1 linetype 1 linewidth 2 linecolor rgb '#240CC3'
|
||||
set style line 2 linetype 3 linewidth 2 linecolor rgb '#1149D6'
|
||||
set style line 3 linetype 2 linewidth 2 linecolor rgb '#0B7FCC'
|
||||
set style line 4 linetype 6 linewidth 2 linecolor rgb '#37999D'
|
||||
set style line 5 linetype 7 linewidth 2 linecolor rgb '#248269'
|
||||
|
|
@ -91,19 +67,65 @@ set style line 9 linetype 4 linewidth 2 linecolor rgb '#AA0519'
|
|||
|
||||
set style line 10 linetype 1 linewidth 1 linecolor rgb '#303030'
|
||||
set style line 11 linetype 0 linewidth 1 linecolor rgb '#A0A0A0' dashtype 3
|
||||
|
||||
#---(End)styles-----------------------------
|
||||
)~";
|
||||
|
||||
const string GNUPLOT_AxisGridSetup = R"~(#
|
||||
#---axis-and-grid-setup---------------------
|
||||
unset border
|
||||
set tics nomirror
|
||||
set grid back linestyle 11
|
||||
|
||||
#set size ratio 0.6
|
||||
|
||||
set arrow 10 from graph 0,0 to graph 1.04,0 size screen 0.025,15,60 filled ls 10
|
||||
set arrow 11 from graph 0,0 to graph 0,1.05 size screen 0.025,15,60 filled ls 10
|
||||
)~";
|
||||
|
||||
|
||||
const string GNUPLOT_BASIC_PLOT_DEF = R"~(#
|
||||
#
|
||||
# GNUPLOT - data plot from Lumiera
|
||||
#
|
||||
|
||||
set key autotitle columnheader
|
||||
set x2label 'X axis'
|
||||
set ylabel 'Y axis'
|
||||
${if Term}set term ${Term} ${
|
||||
if TermSizeSpec}size ${TermSizeSpec}${endif}${
|
||||
endif Term}
|
||||
|
||||
set datafile separator ",;"
|
||||
|
||||
####---------Data---------------------------
|
||||
$RunData << _End_of_Data_
|
||||
${CSVData}
|
||||
_End_of_Data_
|
||||
|
||||
|
||||
${CommonStyleDef}
|
||||
${AxisGridSetup}
|
||||
|
||||
${if XLabel
|
||||
}set xlabel '${XLabel}'
|
||||
${else
|
||||
}stats $RunData using (abscissaName=strcol(1)) every ::0::0 nooutput
|
||||
|
||||
set xlabel abscissaName
|
||||
${end if XLabel
|
||||
}${if YLabel
|
||||
}set ylabel '${YLabel}'
|
||||
${end if YLabel
|
||||
}
|
||||
set key autotitle columnheader tmargin
|
||||
|
||||
)~";
|
||||
|
||||
const string GNUPLOT_SIMPLE_DATA_PLOT = R"~(#
|
||||
####----------------------------------------
|
||||
plot for [i=2:*] $RunData using 1:i with ${DiagramKind} linestyle i-1
|
||||
|
||||
)~";
|
||||
|
||||
|
||||
const string GNUPLOT_SCATTER_REGRESSION = R"~(#
|
||||
#
|
||||
#
|
||||
|
||||
set arrow 1 from graph 0, first 1 to graph 1, first 30 nohead ls 9
|
||||
|
||||
|
|
@ -131,14 +153,31 @@ plot $RunData using 1:3 with impulses linestyle 3, \
|
|||
|
||||
)~";
|
||||
|
||||
}
|
||||
template<class IT>
|
||||
inline string
|
||||
renderCSV (IT& iter)
|
||||
{
|
||||
return join (iter, "\n");
|
||||
}
|
||||
}//(End)template and defaults definitions
|
||||
|
||||
|
||||
/** */
|
||||
string
|
||||
dataPlot (CSVRowIter& rowIT)
|
||||
{
|
||||
UNIMPLEMENTED ("generate gnuplot");
|
||||
TextTemplate plot{GNUPLOT_BASIC_PLOT_DEF
|
||||
+GNUPLOT_SIMPLE_DATA_PLOT};
|
||||
|
||||
auto config
|
||||
= MakeRec()
|
||||
.set ("CommonStyleDef", GNUPLOT_CommonStyleDef)
|
||||
.set ("AxisGridSetup", GNUPLOT_AxisGridSetup)
|
||||
.set ("DiagramKind", "points")
|
||||
.set ("CSVData", renderCSV(rowIT))
|
||||
.genNode();
|
||||
|
||||
return plot.render(config);
|
||||
}
|
||||
|
||||
}} // namespace lib::gnuplot_gen
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ namespace test {
|
|||
};
|
||||
auto csvIter = explore(data).asIterSource();
|
||||
string gnuplot = gnuplot_gen::dataPlot (csvIter);
|
||||
|
||||
cout << gnuplot <<endl;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -57448,7 +57448,7 @@
|
|||
</node>
|
||||
<node CREATED="1710518560044" ID="ID_759729758" MODIFIED="1710518563223" TEXT="Statistik">
|
||||
<node COLOR="#435e98" CREATED="1710518415013" ID="ID_1377396763" MODIFIED="1710518579825" TEXT="Statistik-Hilfsmittel (von Yoshimi-test)">
|
||||
<arrowlink COLOR="#1a2cc4" DESTINATION="ID_746814828" ENDARROW="Default" ENDINCLINATION="-506;-158;" ID="Arrow_ID_1221012838" STARTARROW="None" STARTINCLINATION="1439;113;"/>
|
||||
<arrowlink COLOR="#1a2cc4" DESTINATION="ID_746814828" ENDARROW="Default" ENDINCLINATION="-1079;-52;" ID="Arrow_ID_1221012838" STARTARROW="None" STARTINCLINATION="1439;113;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -112011,9 +112011,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1710079791943" ID="ID_1402055509" MODIFIED="1710080437833" TEXT="Integration">
|
||||
<linktarget COLOR="#9d4168" DESTINATION="ID_1402055509" ENDARROW="Default" ENDINCLINATION="-761;122;" ID="Arrow_ID_397225736" SOURCE="ID_1781115298" STARTARROW="None" STARTINCLINATION="-165;-9;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1710079800390" ID="ID_746814828" MODIFIED="1710124936401" TEXT="meine Statistik- und CSV Hilfsmittel von Yoshimi-Test einbringen">
|
||||
<linktarget COLOR="#1a2cc4" DESTINATION="ID_746814828" ENDARROW="Default" ENDINCLINATION="-506;-158;" ID="Arrow_ID_1221012838" SOURCE="ID_1377396763" STARTARROW="None" STARTINCLINATION="1439;113;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1710079800390" FOLDED="true" ID="ID_746814828" MODIFIED="1711836217102" TEXT="meine Statistik- und CSV Hilfsmittel von Yoshimi-Test einbringen">
|
||||
<linktarget COLOR="#1a2cc4" DESTINATION="ID_746814828" ENDARROW="Default" ENDINCLINATION="-1079;-52;" ID="Arrow_ID_1221012838" SOURCE="ID_1377396763" STARTARROW="None" STARTINCLINATION="1439;113;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1710085462347" ID="ID_963243204" MODIFIED="1710114559233" TEXT="zusammenhängenden Code-Cluster identifizieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1710085659317" ID="ID_1596614133" MODIFIED="1710087280098" TEXT="statistic.hpp"/>
|
||||
|
|
@ -112054,7 +112054,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node COLOR="#338800" CREATED="1710085513597" ID="ID_1623287366" MODIFIED="1710124916786" TEXT="Fehler durch Lumiera-Errors ausdrücken">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1710085528964" ID="ID_197737968" MODIFIED="1710460904274" TEXT="Lumiera's Format-Funktionen verwenden">
|
||||
<node COLOR="#338800" CREATED="1710085528964" FOLDED="true" ID="ID_197737968" MODIFIED="1710460904274" TEXT="Lumiera's Format-Funktionen verwenden">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1710114655354" ID="ID_685893002" MODIFIED="1710460902224" TEXT="zu klären: vollständige floatingpoint-Repräsentation?">
|
||||
<icon BUILTIN="help"/>
|
||||
|
|
@ -112158,6 +112158,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1710517020971" ID="ID_1049280485" MODIFIED="1710517029789" TEXT="das ist ein Vorgriff auf C++20">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1711836137562" ID="ID_108223729" MODIFIED="1711836155134" TEXT="schon mal free-functions begin() | end() hinzugefügt">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1710351128227" ID="ID_1587957134" MODIFIED="1710351136356" TEXT="Ergänzungen">
|
||||
<icon BUILTIN="idea"/>
|
||||
|
|
@ -112267,7 +112270,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1710517964580" HGAP="-27" ID="ID_234167038" MODIFIED="1710517984971" TEXT="Backport festgestellter Defekte + Ergänzungen" VSHIFT="13">
|
||||
<node COLOR="#435e98" CREATED="1710517964580" HGAP="-27" ID="ID_234167038" MODIFIED="1711836050630" TEXT="Backport festgestellter Defekte + Ergänzungen" VSHIFT="13">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1710517986209" ID="ID_1481713125" MODIFIED="1710518006846" TEXT="Yoshimi-test hat keine Unit-Tests — und das merkt man">
|
||||
<icon BUILTIN="smily_bad"/>
|
||||
|
|
@ -112300,7 +112303,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Das Desig ist bewußt minimalistisch (und damit handwerklich orientiert): Es ist ein Werkzeug, keine Komponente aus dem Baukasten.
|
||||
Das Design ist bewußt minimalistisch (und damit handwerklich orientiert): Es ist ein Werkzeug, keine Komponente aus dem Baukasten.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
|
|
@ -112319,12 +112322,23 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1710519627093" ID="ID_1490141836" MODIFIED="1710519646671" TEXT="Fehler im Index-Operator[] von DataRange">
|
||||
<node CREATED="1710519627093" ID="ID_1490141836" MODIFIED="1710519646671" TEXT="Fehler im Index-Operator[] von DataSpan">
|
||||
<node CREATED="1710519649274" ID="ID_500284425" MODIFIED="1710519659629" TEXT="...der zeigt, daß dieser noch nie verwendet wurde"/>
|
||||
<node COLOR="#ff00e3" CREATED="1710519660385" ID="ID_26478609" MODIFIED="1710519687625" TEXT="tja... Tests für Männer">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1711836052405" ID="ID_885379760" MODIFIED="1711836107592" TEXT="hab diese zwei Diskrepanzen schon mal in den Yoshimi-test-Worktree rüberkopiert...">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...in der Hoffnung, daß ich sie dort dann demnächst <i>wiederfinde...</i>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1710079820663" ID="ID_346209836" MODIFIED="1710079838390" TEXT="ein gnuplot-Skript generieren">
|
||||
|
|
@ -114294,17 +114308,15 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711816316013" ID="ID_1527861975" MODIFIED="1711816667950" TEXT="Rahmen schaffen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711816320800" ID="ID_310548089" MODIFIED="1711816488240" TEXT="separate Translation-Unit">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1711816320800" ID="ID_310548089" MODIFIED="1711845412382" TEXT="separate Translation-Unit">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1711816330795" ID="ID_41779330" MODIFIED="1711816336896" TEXT="diese hält die Template-Texte vor">
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1711816397586" ID="ID_831816745" MODIFIED="1711816411097" TEXT="später mal könnte man Resourcen externalisieren">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1711816413392" ID="ID_509012705" MODIFIED="1711816439602" TEXT="zunächst wird alles fest eincompiliert">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
watt soll der Jeitz
|
||||
|
|
@ -114316,7 +114328,9 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1711816463929" ID="ID_1654160554" MODIFIED="1711816482827" TEXT="und bekommt Daten als CSVFile"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1711816463929" ID="ID_1654160554" MODIFIED="1711845409327" TEXT="und bekommt Daten als CSVFile">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711816503707" ID="ID_1610562996" MODIFIED="1711816512171" TEXT="Hilfsmittel zur Aufbereitung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -114335,6 +114349,39 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e1cb80" COLOR="#a50125" CREATED="1711834307113" ID="ID_914019443" MODIFIED="1711834360098" TEXT="noch genauer: eigentlich brauche ich nur einen String mit CSV-Daten">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
<node CREATED="1711834364477" ID="ID_561735018" MODIFIED="1711834373556" TEXT="das wäre ein klassisches YAGNI"/>
|
||||
<node CREATED="1711834384192" ID="ID_232987604" MODIFIED="1711834500091" TEXT="ich mache mir jetzt Sorgen...">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...wegen <i>möglichen</i> Style-Adjustments, die ggfs. eine spezielle Datenspalte auswerten könnten, um Entscheidungen zu treffen — allesamt Entscheidungen, die man notfalls auch hart-gecodet als Parameter durchgeben könnte
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1711838373819" ID="ID_369179473" MODIFIED="1711838436751">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
manches Problem kann man auch<i> in Gnuplot lösen...</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<arrowlink COLOR="#941450" DESTINATION="ID_1167069071" ENDARROW="Default" ENDINCLINATION="30;-94;" ID="Arrow_ID_1563038872" STARTARROW="None" STARTINCLINATION="-447;24;"/>
|
||||
<node CREATED="1711838442489" ID="ID_941034907" MODIFIED="1711838459826" TEXT="Gnuplot ist Turing-complete">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
<node COLOR="#941492" CREATED="1711838462760" ID="ID_1337293297" MODIFIED="1711838483820" TEXT="(und andere Leute hatten typischwerweise schon das gleiche Problem)">
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711820779334" ID="ID_820373527" MODIFIED="1711820787802" TEXT="einfache Builder-Methoden bereitstellen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711820796179" ID="ID_693535760" MODIFIED="1711820809898" TEXT="direkt eine Liste von Strings (zeilenweise)">
|
||||
|
|
@ -114352,25 +114399,48 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1711820876736" ID="ID_1449855332" MODIFIED="1711820912379" TEXT="gemeinsame Abszisse + 1...9 Datenreihen"/>
|
||||
<node CREATED="1711820916356" ID="ID_1235091819" MODIFIED="1711820929101" TEXT="stellt diese als Punkte oder Linien dar"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1711820977003" ID="ID_1738447878" MODIFIED="1711820982619" TEXT="Thema sortieren">
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1711820977003" ID="ID_1738447878" MODIFIED="1711836510572" TEXT="Thema: Daten sortieren">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...relevant immer wenn die Daten als Linien-Plot (wie eine Funktion) dargestellt werden sollen, denn dann müssen die Zeilen nach Abszissenwert aufsteigend sortiert sein
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node CREATED="1711820983626" ID="ID_1670062583" MODIFIED="1711820990224" TEXT="vorerst ausklammern">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1711820991857" ID="ID_816050804" MODIFIED="1711821006944" TEXT="das ist typischerweise einfacher im Client-code"/>
|
||||
<node CREATED="1711821011398" ID="ID_1034083474" MODIFIED="1711821034215" TEXT="generische Lösung: effuse() + stort vector + neuer Iterator">
|
||||
<node CREATED="1711821011398" ID="ID_1034083474" MODIFIED="1711836845546" TEXT="generische Lösung: effuse() ; vector sortieren ; neuer Iterator">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711821043106" ID="ID_1100655638" MODIFIED="1711821127675" TEXT="dann ausgeben in einfachem Diagramm">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1711821061064" ID="ID_554055144" MODIFIED="1711821076346" TEXT="gemeinsame Abszisse .. beschriftet nach Datenzeile"/>
|
||||
<node CREATED="1711821077344" ID="ID_729055387" MODIFIED="1711821097135" TEXT="alle verwenden eine einzige Y-Achse (unbeschriftet)"/>
|
||||
<node COLOR="#338800" CREATED="1711821043106" ID="ID_1100655638" MODIFIED="1711845488403" TEXT="dann ausgeben in einfachem Diagramm">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1711821061064" ID="ID_554055144" MODIFIED="1711845462755" TEXT="gemeinsame Abszisse .. beschriftet nach 1.Datenzeile"/>
|
||||
<node CREATED="1711821077344" ID="ID_729055387" MODIFIED="1711845474858" TEXT="alle verwenden eine einzige Y-Achse (nur optional beschriftet)"/>
|
||||
<node CREATED="1711821100818" ID="ID_469183888" MODIFIED="1711821106065" TEXT="Legende wird automatisch generiert"/>
|
||||
<node CREATED="1711821109901" ID="ID_695061729" MODIFIED="1711821122502" TEXT="das neue Lumiera-Styling verwenden">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1711821109901" ID="ID_695061729" MODIFIED="1711845485900" TEXT="das neue Lumiera-Styling verwenden">
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#690f14" CREATED="1711838313899" ID="ID_1167069071" LINK="#ID_1499450447" MODIFIED="1711845439794" TEXT="muß Anzahl der Datenspalten wissen">
|
||||
<linktarget COLOR="#941450" DESTINATION="ID_1167069071" ENDARROW="Default" ENDINCLINATION="30;-94;" ID="Arrow_ID_1563038872" SOURCE="ID_369179473" STARTARROW="None" STARTINCLINATION="-447;24;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node COLOR="#5b280f" CREATED="1711838491917" ID="ID_1122415865" MODIFIED="1711845497507" TEXT="per STATS_columns herausfinden">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1711838737214" ID="ID_419499506" MODIFIED="1711845504976" TEXT="Iteration">
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1711838523180" ID="ID_618182162" MODIFIED="1711838527236" TEXT="For-Iteration"/>
|
||||
<node CREATED="1711838744702" ID="ID_1772665989" MODIFIED="1711838757664" TEXT="plot for [i = 1:5]"/>
|
||||
<node CREATED="1711838759580" ID="ID_72622844" LINK="#ID_1909454973" MODIFIED="1711839155914" TEXT="noch schöner: plot for [i=1:*]">
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711821130246" ID="ID_1965869017" MODIFIED="1711821143254" TEXT="Scatter mit Regression">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -114397,10 +114467,20 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1711820647889" ID="ID_149856563" MODIFIED="1711820660945" TEXT="GnuplotGen_test">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711820662341" ID="ID_1728359549" MODIFIED="1711820675652" TEXT="einfachster Testfall: ein Daten-Punkt-Plot">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1711820647889" ID="ID_149856563" MODIFIED="1711845599165" TEXT="GnuplotGen_test">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1711820662341" ID="ID_1728359549" MODIFIED="1711845597133" TEXT="einfachster Testfall: ein Daten-Punkt-Plot">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1711845516384" ID="ID_1778551442" MODIFIED="1711845526641" TEXT="kann einfaches Diagramm generieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711845527808" ID="ID_1938525708" MODIFIED="1711845538478" TEXT="bessere Datenübergabe klären">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711845539821" ID="ID_1805048889" MODIFIED="1711845580237" TEXT="einige Bestandteile verifizieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -123451,6 +123531,41 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo
|
|||
<arrowlink DESTINATION="ID_805406393" ENDARROW="Default" ENDINCLINATION="191;-13;" ID="Arrow_ID_304087547" STARTARROW="None" STARTINCLINATION="-93;17;"/>
|
||||
<node CREATED="1710635976579" ID="ID_261528244" MODIFIED="1710635986790" TEXT="filled with inline data from a "here document""/>
|
||||
<node CREATED="1711670158302" ID="ID_1398815424" MODIFIED="1711670175573" TEXT="short form: special filename "-" in plot command"/>
|
||||
<node CREATED="1711838104198" ID="ID_1312864955" MODIFIED="1711838118475" TEXT="can find out properties with the stats command">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1711838123771" ID="ID_1499450447" LINK="https://stackoverflow.com/a/72614673/444796" MODIFIED="1711838290637" TEXT="number of clolums: STATS_columns">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">$RunData << _End_of_Data_ </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2"> name1 name2 name3 </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">11 22 33 </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">_End_of_Data_ </font>
|
||||
</p>
|
||||
<p>
|
||||
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">stats $RunData nooutput </font>
|
||||
</p>
|
||||
<p>
|
||||
<font face="Monospaced" size="2">print STATS_columns </font>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1711838892211" ID="ID_1516869017" MODIFIED="1711838978688" TEXT="Note: can plot until some data is exhausted">
|
||||
<arrowlink COLOR="#3973ae" DESTINATION="ID_1909454973" ENDARROW="Default" ENDINCLINATION="155;-4;" ID="Arrow_ID_663437408" STARTARROW="None" STARTINCLINATION="84;240;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1710635477487" ID="ID_468490349" MODIFIED="1710635482850" TEXT="exctacted from array"/>
|
||||
<node CREATED="1710640785639" ID="ID_374020283" LINK="http://gnuplot.info/docs_5.5/loc9038.html" MODIFIED="1711669407040" TEXT="using clause">
|
||||
|
|
@ -123488,6 +123603,17 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo
|
|||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1711838833243" ID="ID_638440440" MODIFIED="1711838843599" TEXT="Plot-Iteration">
|
||||
<node CREATED="1711838844609" ID="ID_1621919752" MODIFIED="1711838853596" TEXT="generate a series of plots"/>
|
||||
<node CREATED="1711838854256" ID="ID_861025770" MODIFIED="1711838860134" TEXT="works as a single plot command"/>
|
||||
<node CREATED="1711838861709" ID="ID_1669656236" LINK="http://gnuplot.info/docs_5.5/loc9471.html" MODIFIED="1711839041115" TEXT="plot for [var=s:e]">
|
||||
<node CREATED="1711838790631" ID="ID_1909454973" MODIFIED="1711838970886" TEXT="can iterate until data is exhausted">
|
||||
<linktarget COLOR="#3973ae" DESTINATION="ID_1909454973" ENDARROW="Default" ENDINCLINATION="155;-4;" ID="Arrow_ID_663437408" SOURCE="ID_1516869017" STARTARROW="None" STARTINCLINATION="84;240;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1711838996382" ID="ID_666901606" MODIFIED="1711839024415" TEXT="use "*" as upper iteration bound"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1710634294327" ID="ID_617449526" MODIFIED="1710634295505" TEXT="splot">
|
||||
<node CREATED="1710634335886" ID="ID_501497200" MODIFIED="1710634347513" TEXT="generates 3D plots">
|
||||
|
|
@ -123624,7 +123750,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo
|
|||
</node>
|
||||
<node CREATED="1711745109585" ID="ID_1378311242" LINK="http://gnuplot.info/docs_5.5/loc12343.html" MODIFIED="1711745119516" TEXT="set key : Legende">
|
||||
<node CREATED="1711745146982" ID="ID_459866909" MODIFIED="1711745163422" TEXT="<notitle> im draw: schaltet Legende für eine bestimmte Kurve ab"/>
|
||||
<node CREATED="1711745219450" ID="ID_1075941278" MODIFIED="1711745235844" TEXT="<title "text"> im draw: gibt einer Kurfe einen Namen für die Legende"/>
|
||||
<node CREATED="1711745219450" ID="ID_1075941278" MODIFIED="1711745235844" TEXT="<title "text"> im draw: gibt einer Kurve einen Namen für die Legende"/>
|
||||
<node CREATED="1711746522994" ID="ID_258486412" LINK="http://gnuplot.info/docs_5.5/loc12464.html" MODIFIED="1711746538590" TEXT="set key autotitle : Text(quelle) steuern"/>
|
||||
<node CREATED="1711745404984" ID="ID_1831989439" MODIFIED="1711745406436" TEXT="Layout">
|
||||
<node CREATED="1711745391458" ID="ID_1966571180" MODIFIED="1711745404180" TEXT="opaque: wird nachher darüber gezeichnet"/>
|
||||
|
|
@ -123685,6 +123811,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo
|
|||
</node>
|
||||
<node CREATED="1711748889306" ID="ID_1817839309" MODIFIED="1711748893190" TEXT="hau-zu">
|
||||
<node CREATED="1711748899657" ID="ID_401687182" LINK="http://gnuplotting.org/ease-your-plotting-with-config-snippets/index.html" MODIFIED="1711748940526" TEXT="Config-Schnipsel für Standard-Einstellungen"/>
|
||||
<node CREATED="1711839852780" ID="ID_926086582" LINK="https://stackoverflow.com/a/72329517/444796" MODIFIED="1711839896075" TEXT="Einzelne Header aus den Daten beziehen"/>
|
||||
<node CREATED="1711757567732" ID="ID_1637339854" LINK="http://gnuplotting.org/attractive-plots/index.html" MODIFIED="1711757578494" TEXT="Tips for »attractive plots«"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue