Ich habe eine CSV-Datendatei erstellt von einer anderen 3rd-Party-Anwendung, die mit gnuplot
geplottet werden sollte. Lassen Sie uns die Datei übernehmen, hat folgendes Format:Gnuplot: Kürzeste Möglichkeit, die erste Zeile in der Datendatei zu ignorieren
1;2;3;4;5;6 <-- This is the header line that should be ignored (with values 1;2;...;N)
1;1;2;1;1;1
2;3;3;3;5;6
3;4;1;1;1;4
Die erste Spalte ist die x-Achse sollten die folgenden Spalten jeweils als eigene lineplot aufgetragen werden (ja, ich weiß, zu viele Liniendiagramme innerhalb einer Parzelle kann schlecht aussehen, aber nur um eine Idee zu bekommen). Hier ein MCVE:
Das Problem ist, dass dies auch die erste Zeile wie Daten darstellt.
Ich weiß, dass auf jede Zeile in der Daten-Datei ignorieren kann es mit #
durch Starten, wie #1;2;3;4;5;6
, aber ich will nicht, um die Datei zu bearbeiten, weil es auch von anderen Werkzeugen verwendet wird.
Eine andere Möglichkeit ist, plot <filename> every ::1
zu verwenden, um die erste Zeile zu ignorieren, was bedeuten würde, dass ich every ::1
5 Mal in das obige Skript einschließen müsste, wie in this link erklärt. Dies würde aussehen wie die folgende:
set terminal png size 1000,500
set datafile separator ";" # CSV file is seperated with ;
plot \
'C://tmp/test.csv' every ::1 using 1:2 with lines title "A",\
'C://tmp/test.csv' every ::1 using 1:3 with lines title "B",\
'C://tmp/test.csv' every ::1 using 1:4 with lines title "C",\
'C://tmp/test.csv' every ::1 using 1:5 with lines title "D",\
'C://tmp/test.csv' every ::1 using 1:6 with lines title "E"
ist die Definition every ::1
für jede Handlung wirklich der einzige Weg? Gibt es eine kürzere - bevorzugte Einstrich - Möglichkeit, die erste (n) Linie (n) zu ignorieren; eine Möglichkeit, die every ::1
"global" oder etwas wie (Pseudocode) set datafile ignorefirstnlines 1
zu definieren?
Ist 'Every :: 1' wirklich so schlecht? Es scheint mir elegant. Woher kommen die Titelfolgen "B", "C" usw.? Sind sie Spaltenüberschriften? – e0k
Nicht "so schlecht", aber ich würde es eleganter finden, wenn das in einer Aussage anstatt in jeder Handlung getan werden könnte. Wenn ich mir ein Balkendiagramm mit 5 verschiedenen Balken und zusätzlichen Fehlerbalken vorstelle, würde das zu 10 Plot-Anweisungen führen, also 10 'alle :: 1 '. Und ja, "A", "B" usw. sind nur Beispiel-Spaltenüberschriften, die im Schlüssel/in der Legende angezeigt werden sollen. –
Kennen Sie die Plot-Iteration? Geben Sie 'help plot iteration' von einer 'gnuplot' Eingabeaufforderung ein. – e0k