staging.inyokaproject.org

GNUPLOT: Linien Zeilenweise

Status: Ungelöst | Ubuntu-Version: Ubuntu 17.10 (Artful Aardvark)
Antworten |

Shuya

Anmeldungsdatum:
5. Februar 2018

Beiträge: Zähle...

Hallo,

Ich habe ein Problem beim Plotten von Prozessdaten, bei denen ich aktuell nicht weiter komme. Meine Datentabelle sieht folgendermaßen aus: x1,x2,x3,y1,y2,y3,K

Ich habe hunderte Messungen, die dann je eine Zeile darstellen.

Wobei x1,x2,x3 meine darzustellenden X-Werte sind, y ebenso, K ist eine Kategorie, nach der ich mittels Palette die Datensätze färbe. Nun kann ich das ganze mittels

   set palette model RGB defined ( 0 "green", 1 "red")
   plot 'daten.txt' using 1:4:7 notitle with points pt 6 ps 2 palette ,\
   	'daten.txt' using 2:5:7 notitle with points pt 8 ps 2 palette ,\
   	'daten.txt' using 3:6:7 notitle with points pt 12 ps 2 palette

plotten, und erhalte ein Punktdiagramm, wo ich immerhin mittels verschiedener Punktarten die einzelnen Messreihen (1-3) auseinanderhalten kann.

Schöner wäre es, wenn das ganze als Liniendiagramm dargestellt werden würde, wobei jede Zeile in meiner Datendatei eine Linie wäre, mit den 3 Punkten definiert durch (x1,y2)...(x3,y3) mit der Farbe nach Kategorie K.

Leider wurde ich da bislang nicht fündig, und stehe etwas auf dem Schlauch.

Könnt ihr mir helfen? Vielen Dank!

Grüße Micha

Prof._Frink

Anmeldungsdatum:
29. Mai 2010

Beiträge: 1096

Hi,

das folgende Bash-Skript, sollte das gewünschte tuen, eine Lösung, die nur Gnuplot verwendet, fällt mir nicht ein.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash                                                                                                                                                    
ar=()
while read line; do
    f=$(mktemp)
    echo "$line"  | awk -v "FS=," '{print $1,$4,$7}' >> "$f"
    echo "$line"  | awk -v "FS=," '{print $2,$5,$7}' >> "$f"
    echo "$line"  | awk -v "FS=," '{print $3,$6,$7}' >> "$f"
    ar+=("$f")
done < daten.txt

gnuplot -p <<EOF
set palette model RGB defined ( 0 "green", 1 "red")
files="${ar[@]}"
plot for [file in files] file u 1:2:3 notitle with lp pt 6 ps 2 palette
EOF

for f in ${ar[@]}; do
   rm "$f"
done

Viele Grüße,

Frink

Bilder
Antworten |