【问题标题】:Gnuplot from data file for assignment in do for loop for an animation来自数据文件的 Gnuplot 用于在 do for 循环中分配动画
【发布时间】:2014-12-12 04:15:22
【问题描述】:

假设我有一个像这样的数据文件:

1.3 4.23
1.23 5.667
.
.
.

这些是我的行的常量。我想将其制作成动画 gif,但我无法获取特定数据。

到目前为止,我正在做

set terminal gif animate delay 50
set output 'test.gif'
stats 'temp.dat' nooutput
set xrange[-1:1]
set yrange[-1:1]
h(x) = a*x + b

这就是我遇到麻烦的地方。我尝试了这两种方法:

do for [i=1:int(STATS_records)]{
   plot h(x) u (a=$1):(b=$2) w l
}

还有这个:

plot 'temp.dat', f(x) = ($1)*x + ($2)

两者都不起作用。帮助表示赞赏。

【问题讨论】:

    标签: plot gnuplot


    【解决方案1】:

    为了从文件中提取参数,您必须在每次迭代中调用stats,并且只选择带有every的第i行

    set terminal gif animate delay 50
    set output 'test.gif'
    
    set xrange[-10:10]
    set yrange[-10:10]
    h(x) = a*x + b
    
    stats 'temp.dat' nooutput
    N = int(STATS_records) - 1
    
    do for [i=0:N] {
      stats 'temp.dat' every ::i::i nooutput
      a = STATS_min_x
      b = STATS_min_y
      plot h(x) with lines
    }
    

    【讨论】:

    • 太棒了!这行得通,我只是在脚本顶部添加了set terminal gif animate delay 50set output 'test.gif'。你非常了解gnuplot!谢谢。
    • 动画有效,但我正在尝试将其与我的其余代码集成。代码在这里:gist.github.com/fxfactorial/b488cff19104e316eba7 基本上我想先添加红点和蓝点和一条线,然后在动画之上绘制,但现在我得到一个不正确的动画来回,然后是初始情节.我需要重新绘制吗?非常感谢您的帮助。相关行是 36 和 81
    • 我不确定,如果我说得对,但如果你想在整个动画中保留蓝色和红色点,你还必须在每次迭代中重新绘制这些值。
    • 是的,我想要一个带有蓝色和红色点以及一条线的初始帧。然后最重要的是我想要动画,但现在我明白你的意思了,点需要在每次迭代中重新绘制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多