Library: implement generation of a simple data visualisation

CSV data -> Gnuplot script
This commit is contained in:
Fischlurch 2024-03-30 23:45:03 +01:00
parent db0838ddcc
commit a6084bd2d6
3 changed files with 235 additions and 69 deletions

View file

@ -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

View file

@ -85,7 +85,7 @@ namespace test {
};
auto csvIter = explore(data).asIterSource();
string gnuplot = gnuplot_gen::dataPlot (csvIter);
cout << gnuplot <<endl;
}

View file

@ -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:&#160;&#160;&#160;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&#xe4;ngenden Code-Cluster identifizieren">
<icon BUILTIN="button_ok"/>
<node CREATED="1710085659317" ID="ID_1596614133" MODIFIED="1710087280098" TEXT="statistic.hpp"/>
@ -112054,7 +112054,7 @@ Date:&#160;&#160;&#160;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&#xfc;cken">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1710085528964" ID="ID_197737968" MODIFIED="1710460904274" TEXT="Lumiera&apos;s Format-Funktionen verwenden">
<node COLOR="#338800" CREATED="1710085528964" FOLDED="true" ID="ID_197737968" MODIFIED="1710460904274" TEXT="Lumiera&apos;s Format-Funktionen verwenden">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1710114655354" ID="ID_685893002" MODIFIED="1710460902224" TEXT="zu kl&#xe4;ren: vollst&#xe4;ndige floatingpoint-Repr&#xe4;sentation?">
<icon BUILTIN="help"/>
@ -112158,6 +112158,9 @@ Date:&#160;&#160;&#160;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&#xfc;gt">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1710351128227" ID="ID_1587957134" MODIFIED="1710351136356" TEXT="Erg&#xe4;nzungen">
<icon BUILTIN="idea"/>
@ -112267,7 +112270,7 @@ Date:&#160;&#160;&#160;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&#xe4;nzungen" VSHIFT="13">
<node COLOR="#435e98" CREATED="1710517964580" HGAP="-27" ID="ID_234167038" MODIFIED="1711836050630" TEXT="Backport festgestellter Defekte + Erg&#xe4;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 &#x2014; und das merkt man">
<icon BUILTIN="smily_bad"/>
@ -112300,7 +112303,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<head/>
<body>
<p>
Das Desig ist bewu&#223;t minimalistisch (und damit handwerklich orientiert): Es ist ein Werkzeug, keine Komponente aus dem Baukasten.
Das Design ist bewu&#223;t minimalistisch (und damit handwerklich orientiert): Es ist ein Werkzeug, keine Komponente aus dem Baukasten.
</p>
<ul>
<li>
@ -112319,12 +112322,23 @@ Date:&#160;&#160;&#160;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&#xdf; dieser noch nie verwendet wurde"/>
<node COLOR="#ff00e3" CREATED="1710519660385" ID="ID_26478609" MODIFIED="1710519687625" TEXT="tja... Tests f&#xfc;r M&#xe4;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&#xfc;berkopiert...">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...in der Hoffnung, da&#223; ich sie dort dann demn&#228;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 &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; 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&#xe4;lt die Template-Texte vor">
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1711816397586" ID="ID_831816745" MODIFIED="1711816411097" TEXT="sp&#xe4;ter mal k&#xf6;nnte man Resourcen externalisieren">
<icon BUILTIN="hourglass"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1711816413392" ID="ID_509012705" MODIFIED="1711816439602" TEXT="zun&#xe4;chst wird alles fest eincompiliert">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
watt soll der Jeitz
@ -114316,7 +114328,9 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; 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 &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; 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&#xe4;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&#246;glichen</i>&#160;Style-Adjustments, die ggfs. eine spezielle Datenspalte auswerten k&#246;nnten, um Entscheidungen zu treffen &#8212; allesamt Entscheidungen, die man notfalls auch hart-gecodet als Parameter durchgeben k&#246;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>&#160;in Gnuplot l&#246;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 &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; 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&#252;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&#xf6;sung: effuse() + stort vector + neuer Iterator">
<node CREATED="1711821011398" ID="ID_1034083474" MODIFIED="1711836845546" TEXT="generische L&#xf6;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&#xdf; 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&#xf6;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 &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; 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&#xfc;bergabe kl&#xe4;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&lt;unsigned int*&gt;(static_cast&lt;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 &quot;here document&quot;"/>
<node CREATED="1711670158302" ID="ID_1398815424" MODIFIED="1711670175573" TEXT="short form: special filename &quot;-&quot; 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 &lt;&lt; _End_of_Data_ </font>
</p>
<p>
<font face="Monospaced" size="2">&#160;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&lt;unsigned int*&gt;(static_cast&lt;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 &quot;*&quot; 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&lt;unsigned int*&gt;(static_cast&lt;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="&lt;notitle&gt; im draw: schaltet Legende f&#xfc;r eine bestimmte Kurve ab"/>
<node CREATED="1711745219450" ID="ID_1075941278" MODIFIED="1711745235844" TEXT="&lt;title &quot;text&quot;&gt; im draw: gibt einer Kurfe einen Namen f&#xfc;r die Legende"/>
<node CREATED="1711745219450" ID="ID_1075941278" MODIFIED="1711745235844" TEXT="&lt;title &quot;text&quot;&gt; im draw: gibt einer Kurve einen Namen f&#xfc;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&#xfc;ber gezeichnet"/>
@ -123685,6 +123811,7 @@ unsigned int ThreadIdAsInt = *static_cast&lt;unsigned int*&gt;(static_cast&lt;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&#xfc;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 &#xbb;attractive plots&#xab;"/>
</node>
</node>