If you donβt need the arrow head, you can try the pulse style (with pulses, not with lines) (If you still want the lines to be on top, you can display twice).
If you really need arrows, the following might help: it uses a for loop (or sorts) to add vertical arrows to the plot.
Gnuplot script, for looping inside or adding an existing chart
In particular:
create a simloop.gp file that looks like this:
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
Then create a simloop.sh file that looks something like this.
#!/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
Then create a simulation.gp file that looks something like this:
count = 0; max = 5; load "simloop.gp" set yrange[0:*] plot "simulation.dat" u 1:2 wl
Make sure the shell file has executable permissions (chmod + wrx simloop.sh), download gnuplot and enter
load "./simulation.gp"
This worked for me with the data file
1 99 0 2 92.7 1 3 100.3 2 4 44.2 0 5 71.23 1
(For testing, I got rid of time formatting. You should be able to return it without any problems.)
Then I got this graph: 
What I think is more or less what you want.