从 gnuplot 中的数据文件绘制多个图形和动画
plotting multiple graphs and animation from a data file in gnuplot
假设我有以下示例数据文件。
0 1 2
0 3 4
0 1 9
0 9 2
0 19 0
0 6 1
0 11 0
1 3 2
1 3 4
1 1 6
1 9 2
1 15 0
1 6 6
1 11 1
2 3 2
2 4 4
2 1 6
2 9 6
2 15 0
2 6 6
2 11 1
第一列给出时间值。第二个给出 x 和第 3 列 y 的值。我希望在不同时间从该数据文件绘制 y 的图形作为 x 的函数,
即,对于 t=0,我将使用 2:3 绘制直到 t=0 索引的线。然后我将为 t=1 处的变量做同样的事情。
在一天结束时,我想要一个 gif,即 y vs x 图如何随着时间的推移改变形状的动画。我如何在 gnuplot 中执行此操作?
到目前为止你尝试了什么? (检查 help ternary
和 help gif
)
您需要使用三元运算符过滤数据,然后创建动画。
代码:
### plot filtered data and animate
reset session
$Data <<EOD
0 1 2
0 3 4
0 1 9
0 9 2
0 19 0
0 6 1
0 11 0
1 3 2
1 3 4
1 1 6
1 9 2
1 15 0
1 6 6
1 11 1
2 3 2
2 4 4
2 1 6
2 9 6
2 15 0
2 6
2 11 1
EOD
set terminal gif animate delay 50 optimize
set output "myAnimation.gif"
set xrange[0:20]
set yrange[0:10]
do for [i=0:2] {
plot $Data u 2:(==i?:NaN) w lp pt 7 ti sprintf("Time: %g",i)
}
set output
### end of code
结果:
加法:
==i?:NaN
的字义:
如果第一列中的值等于 i
,则结果为第三列中的值,否则将为 NaN
("Not a Number").
假设我有以下示例数据文件。
0 1 2
0 3 4
0 1 9
0 9 2
0 19 0
0 6 1
0 11 0
1 3 2
1 3 4
1 1 6
1 9 2
1 15 0
1 6 6
1 11 1
2 3 2
2 4 4
2 1 6
2 9 6
2 15 0
2 6 6
2 11 1
第一列给出时间值。第二个给出 x 和第 3 列 y 的值。我希望在不同时间从该数据文件绘制 y 的图形作为 x 的函数,
即,对于 t=0,我将使用 2:3 绘制直到 t=0 索引的线。然后我将为 t=1 处的变量做同样的事情。
在一天结束时,我想要一个 gif,即 y vs x 图如何随着时间的推移改变形状的动画。我如何在 gnuplot 中执行此操作?
到目前为止你尝试了什么? (检查 help ternary
和 help gif
)
您需要使用三元运算符过滤数据,然后创建动画。
代码:
### plot filtered data and animate
reset session
$Data <<EOD
0 1 2
0 3 4
0 1 9
0 9 2
0 19 0
0 6 1
0 11 0
1 3 2
1 3 4
1 1 6
1 9 2
1 15 0
1 6 6
1 11 1
2 3 2
2 4 4
2 1 6
2 9 6
2 15 0
2 6
2 11 1
EOD
set terminal gif animate delay 50 optimize
set output "myAnimation.gif"
set xrange[0:20]
set yrange[0:10]
do for [i=0:2] {
plot $Data u 2:(==i?:NaN) w lp pt 7 ti sprintf("Time: %g",i)
}
set output
### end of code
结果:
加法:
==i?:NaN
的字义:
如果第一列中的值等于 i
,则结果为第三列中的值,否则将为 NaN
("Not a Number").