/ / plot przy użyciu gnuplot lub python - python, gnuplot

wykreślić za pomocą gnuplot lub python - python, gnuplot

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:

wprowadź opis obrazu tutaj

Odpowiedzi:

1 dla odpowiedzi № 1

Oto 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.