0
votes

I have adapted the following code from Gnuplot 3d time animation from data file

filedata = 'Sun_t_v_state.dat'
filedata2 = 'Mercury_v_state.dat'
filedata3 = 'Venus_t_v_state.dat'
filedata4 = 'Earth_t_v_state.dat'
filedata5 = 'Mars_t_v_state.dat'
filedata6 = 'Jupiter_t_v_state.dat'
filedata7 = 'Saturn_t_v_state.dat'
filedata8 = 'Uranus_t_v_state.dat'
filedata9 = 'Neptune_t_v_state.dat'
filedata10 = 'Pluto_t_v_state.dat'
n = 44

set term gif animate
set output 'output.gif'

do for [j=1:n] {
    set title 'time '.j
    splot filedata u 2:3:4 every ::1::j w l lw 2, \
          filedata u 2:3:4 every ::j::j w p pt 7 ps 2
    splot filedata2 u 2:3:4 every ::1::j w l lw 2, \
          filedata2 u 2:3:4 every ::j::j w p pt 7 ps 2
    splot filedata3 u 2:3:4 every ::1::j w l lw 2, \
          filedata3 u 2:3:4 every ::j::j w p pt 7 ps 2
    splot filedata4 u 2:3:4 every ::1::j w l lw 2, \
          filedata4 u 2:3:4 every ::j::j w p pt 7 ps 2
    splot filedata5 u 2:3:4 every ::1::j w l lw 2, \
          filedata5 u 2:3:4 every ::j::j w p pt 7 ps 2
    splot filedata6 u 2:3:4 every ::1::j w l lw 2, \
          filedata6 u 2:3:4 every ::j::j w p pt 7 ps 2
    splot filedata7 u 2:3:4 every ::1::j w l lw 2, \
          filedata7 u 2:3:4 every ::j::j w p pt 7 ps 2
    splot filedata8 u 2:3:4 every ::1::j w l lw 2, \
          filedata8 u 2:3:4 every ::j::j w p pt 7 ps 2
    splot filedata9 u 2:3:4 every ::1::j w l lw 2, \
          filedata9 u 2:3:4 every ::j::j w p pt 7 ps 2
    splot filedata10 u 2:3:4 every ::1::j w l lw 2, \
          filedata10 u 2:3:4 every ::j::j w p pt 7 ps 2
}

But when I run this I only get one frame in the gif file, labeled 'time 1'; what do I need to change to get this to work?

1
Do you really intend to have a separate animation frame for each planet? Each time through that loop will produce 10 frames, one for each splot statement. Your animation should end up with 440 frames. You say it only has 1 frame. Is the size of the file consistent with that or could it really contain 440 frames but you are only displaying the first one? - Ethan
I want to graph them all at once; should I remove the extra splots and add commas with what was inside the other splots? - maxbear123
Yes. Try it and add the output gif to your question so that we can see what did or didn't work. - Ethan

1 Answers

0
votes

I needed to switch it to all within one splot command like so:

# define fixed axis-ranges

# filename and n=number of lines of your data 
filedata = 'Sun_t_v_state.dat'
filedata2 = 'Mercury_v_state.dat'
filedata3 = 'Venus_t_v_state.dat'
filedata4 = 'Earth_t_v_state.dat'
filedata5 = 'Mars_t_v_state.dat'
filedata6 = 'Jupiter_t_v_state.dat'
filedata7 = 'Saturn_t_v_state.dat'
filedata8 = 'Uranus_t_v_state.dat'
filedata9 = 'Neptune_t_v_state.dat'
filedata10 = 'Pluto_t_v_state.dat'
n = 44

set term gif animate
set output 'output.gif'

do for [j=1:n] {
    set title 'time '.j
    splot filedata u 2:3:4 every ::1::j w l lw 2, \
          filedata u 2:3:4 every ::j::j w p pt 7 ps 2, \
          filedata2 u 2:3:4 every ::1::j w l lw 2, \
          filedata2 u 2:3:4 every ::j::j w p pt 7 ps 2, \
          filedata3 u 2:3:4 every ::1::j w l lw 2, \
          filedata3 u 2:3:4 every ::j::j w p pt 7 ps 2, \
          filedata4 u 2:3:4 every ::1::j w l lw 2, \
          filedata4 u 2:3:4 every ::j::j w p pt 7 ps 2, \
          filedata5 u 2:3:4 every ::1::j w l lw 2, \
          filedata5 u 2:3:4 every ::j::j w p pt 7 ps 2, \
          filedata6 u 2:3:4 every ::1::j w l lw 2, \
          filedata6 u 2:3:4 every ::j::j w p pt 7 ps 2, \
          filedata7 u 2:3:4 every ::1::j w l lw 2, \
          filedata7 u 2:3:4 every ::j::j w p pt 7 ps 2, \
          filedata8 u 2:3:4 every ::1::j w l lw 2, \
          filedata8 u 2:3:4 every ::j::j w p pt 7 ps 2, \
          filedata9 u 2:3:4 every ::1::j w l lw 2, \
          filedata9 u 2:3:4 every ::j::j w p pt 7 ps 2, \
          filedata10 u 2:3:4 every ::1::j w l lw 2, \
          filedata10 u 2:3:4 every ::j::j w p pt 7 ps 2   
          }