Sou*_*jit 2 gnuplot rows multiple-columns difference
我在文本文件中有3列数据.第一栏是时间.第二列和第三列是我的可变参数.我的目的是绘制第3列数据的当前值与第2列的先前数据值与第1列当前值的差值.
这有点棘手,因为gnuplot通常只能访问当前行的值.但是,您可以在内存中保留有限数量的先前值,并在using语句中使用一些技巧.
不幸的是你没有提供任何示例数据,所以这里是我的测试数据文件test.dat(没有时间,你需要自己调整):
0 1 5
1 12 7
2 1 6
3 5 5
Run Code Online (Sandbox Code Playgroud)
以下脚本绘制了第3列中的当前值与第2列中的上一个值之间的差异:
back2 = back1 = 0
shift(x) = (back2 = back1, back1 = x)
plot 'test.dat' using 0:(shift($2), $0 < 1 ? 1/0 : $3 - back2) w lp pt 7 ps 2
Run Code Online (Sandbox Code Playgroud)
这里发生的事情基本上如下:
在using语句中,您可以使用逗号分隔多个语句,例如赋值.仅将一列中的最后一个表达式用作实际数据值.
shift第二列的函数首先将前一行的值分配给变量back2,然后将当前值分配给变量back1.因此,调用shift($2)将前一行的第2列中的值保存为变量back2.然后你可以做实际的计算$3 - back2.该条件$0 < 1会丢弃您没有先前值的第一行.
结果是:

| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |