Если вы не хотите стрелку, вы можете попробовать стиль импульсов (с импульсами, а не с линиями) (Если вы все еще хотите, чтобы линии были сверху, вы можете построить дважды).
Есливам действительно нужны стрелки, тогда может помочь следующее: он использует цикл for (или сортирует) для добавления вертикальных стрелок к графику.
скрипт Gnuplot для цикла внутри или добавления к существующему графику
В частности:
создайте файл simloop.gp, который выглядит следующим образом:
count = count+1
#save the count to count.gp
system 'echo '.count.' > count.gp'
#load the simloop shell
system "./simloop.sh"
#draw the arrow
load 'draw_arrow.gp'
if(count<max) reread
Затем создайте файл simloop.sh, который выглядит примерно так
#!/bin/bash
#read the count
count=$(awk -F, '{print $1}' count.gp)
#read the file
xcoord=$(awk -v count=$count -F, 'BEGIN{FS=" ";}{ if(NR==count) print $1}' simulation.dat)
ycoord=$(awk -v count=$count -F, 'BEGIN{FS=" "}{ if(NR==count) print $2}' simulation.dat)
dir=$(awk -v count=$count -F, 'BEGIN{FS=" "}{ if(NR==count) print $3}' simulation.dat)
#choose the direction of the arrow
if [ \"$dir\" == \"0\" ]; then
echo '' > draw_arrow.gp
fi
if [ \"$dir\" == \"1\" ]; then
echo 'set arrow from ' $xcoord' ,0 to '$xcoord','$ycoord' head' > draw_arrow.gp
fi
if [ \"$dir\" == \"2\" ]; then
echo 'set arrow from '$xcoord',0 to '$xcoord','$ycoord' backhead' > draw_arrow.gp
fi
Затем создайте файл Simulation.gp, который будет выглядеть примерно так:
count = 0;
max = 5;
load "simloop.gp"
set yrange[0:*]
plot "simulation.dat" u 1:2 w l
Убедитесь, что у файла оболочки есть права на исполняемый файл (chmod + wrx simloop.sh), загрузите gnuplotи наберите
load "./simulation.gp"
Это сработало для меня с файлом данных
1 99 0
2 92.7 1
3 100.3 2
4 44.2 0
5 71.23 1
(Для тестирования я избавился от форматирования времени. Вы сможете вернуть его без особых проблем)..)
Тогда я получил этот график:
Что, я думаю, более или менее то, что вы хотите.