具有多个图形的3d GNUPLOT动画

问题描述

我从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
}

但是当我运行它时,我在gif文件中只得到一帧,标记为“时间1”;我需要进行哪些更改才能使其正常工作?

解决方法

我需要在一个splot命令中将其切换为全部,如下所示:

# 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   
          }