Mam plik txt z trajektoriami. Jak wykreślić kolumnę 3 przez gnuplot i mieć pionową linię do oddzielnych trajektorii.
#indexes: 0
1 -0.375E+04 0.382E+01
2 -0.375E+04 0.332E+01
3 -0.376E+04 0.353E+01
#indexes: 1
1 -0.735E+04 0.093E+01
2 -0.735E+04 0.096E+01
3 -0.735E+04 0.082E+01
4 -0.735E+04 0.094E+01
#indexes: 2
1 -0.835E+04 0.401E+01
2 -0.035E+04 0.438E+01
3 -0.365E+04 0.438E+01
Mam wiele indeksów.
Zdjęcie:
Odpowiedzi:
1 dla odpowiedzi № 1Oto przykładowy skrypt powłoki, który działa z przykładowymi danymi. Zakłada, że dane znajdują się w pliku data
, tworzy drugi plik tmp /tmp/data2
, i obraz /tmp/data.png
.
#!/bin/bash
max=$(awk <data "
!/^#indexes/{ if($3+0>max)max = $3 }
END {print max}")
awk <data >/tmp/data2 -vmax="$max" "
/^#indexes/ {printf "%s %sn",i,max; next}
{ i++; }"
gnuplot <<!
set terminal png
set output "/tmp/data.png"
plot "data" using 3 with lines linetype rgb "red",
"/tmp/data2" using 1:2 with impulse linetype rgb "blue"
!
# eg: display /tmp/data.png
Pierwszy awk znajduje maksymalną wartość trzeciego pola. Drugie awk tworzy wiersz danych "i max" dla każdej linii "#indeksy", gdzie i
liczy się liczba linii danych, tj. wartości osi x dla niebieskiej pionowej kwestia.