使用gnuplot创建移动音频级别的动画

使用gnuplot创建移动音频级别的动画,gnuplot,Gnuplot,我是gnuplot的新手,正在尝试使用它创建移动音频级别的动画,如下面的GIF: 我知道我需要使用如下命令写出一系列可用于创建视频的PNG文件: set output sprintf('hrir_frame%03.0f.png',ii) 我假设我应该使用一个.dat文件,每行上的音频级别如下: 4 9 -3 -5 2 ... 但是,我不知道如何使gnuplot从一个值滑动到另一个值,如上面的GIF所示。您可以使用每个说明符在数据中移动: datafile = "data.dat" set

我是gnuplot的新手,正在尝试使用它创建移动音频级别的动画,如下面的GIF:

我知道我需要使用如下命令写出一系列可用于创建视频的PNG文件:

set output sprintf('hrir_frame%03.0f.png',ii)
我假设我应该使用一个.dat文件,每行上的音频级别如下:

4
9
-3
-5
2
...

但是,我不知道如何使gnuplot从一个值滑动到另一个值,如上面的GIF所示。

您可以使用
每个
说明符在数据中移动:

datafile = "data.dat"
set terminal pngcairo

stats datafile
set yrange [STATS_min_y*1.2:STATS_max_y*1.2]

npoints = 100  # Always show 100 data points.

do for [ii=0:STATS_records-npoints] {
   set output sprintf('hrir_frame%03.0f.png',ii)
   print ii
   plot datafile every ::ii::ii+npoints w lp notitle
}
这将生成一组图像文件,然后这些文件可以组合成电影

另一个选项可能是使用带有动画的
gif
终端:

datafile = "data.dat"
set terminal gif size 300,200 animate delay 2
set output "moving.gif"

stats datafile
set yrange [STATS_min_y*1.2:STATS_max_y*1.2]

npoints = 100

do for [i=0:STATS_records-npoints] {
   print i
   plot datafile every ::i::i+npoints w lp notitle
}
这两个脚本中的重要部分是

plot datafile every ::i::i+npoints
请键入
help every
了解详细信息,条目
i
i+npoints
对应于第一个数据点和数据点的数量

为了在每个图上具有一致的缩放,y范围通过
set yrange
进行调整。限制来自
stats
命令,但可以手动设置

gif结果如下所示(它相当大,可能无法满足您的速度要求,也许可以对其进行优化):

示例数据是使用创建的

datafile = "data.dat"
set print datafile

do for [i=0:500] {
   print    sin(2.0*pi*1.0*(i/100.0))      \
          + sin(2.0*pi*2.0*((i+25)/100.0)) \
          + sin(2.0*pi*3.0*((i+15)/100.0))
}

你好我认为你需要提供更多的信息。您是否有一些输入文件作为示例放在这里?有很多方法可以实现这一点,但其中一种方法是在png文件上创建一个系列,然后根据您的操作系统使用
convert
或类似的方法组合它们。另外,试着在谷歌上多搜索一点,因为这是在@ViniciusPlacco之前回答过的,所以这个例子是不同的,因为它从0-1过渡到2-3。对于每一帧,我想滑出一个值并添加另一个值。因此,在本例中,第一帧显示0-1,下一帧显示1-2。但我不知道如何构造dat文件或gnuplot代码来实现这一点。有什么建议吗?谢谢,这看起来是正确的。不幸的是,尽管我收到了这样的消息:
“test”,第5行:未定义变量:STATS\u min\u y
有什么想法@maij?可能是不同的gnuplot版本?我在Debian Jessie上使用5.0
STATS\u min\u y
STATS\u max\u y
用于在每个绘图上具有相同的范围,您可以手动设置它们。它们应该是
stats
的输出。您可以在
stats
命令之后键入
show variables
来检查它们是否存在。这同样适用于
STATS\u记录
:如果它不存在,请手动设置它。@maji,看起来它们为我命名为
STATS\u min
STATS\u max
。换成那两个就行了。谢谢你的帮助!