我的文本文件中有 3 列数据。第一列是时间。第二列和第三列是我的可变参数。我的目的是绘制第三列数据的当前值和第二列的先前数据值与第一列当前值的差异。
最佳答案
这有点棘手,因为 gnuplot 通常只能访问当前行的值。但是,您可以通过 using
中的一些技巧在内存中保留有限数量的先前值。陈述。
不幸的是,您没有提供任何示例数据,所以这是我的测试数据文件 test.dat
(没有时间,您需要自行调整):
0 1 5
1 12 7
2 1 6
3 5 5
以下脚本绘制第 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
这里发生的事情基本上如下:
using
内语句 您可以用逗号分隔多个语句,例如赋值。仅使用一列中的最后一个表达式作为实际数据值。
shift
函数第二列首先将前一行的值分配给变量 back2
然后将当前值赋给变量back1
。所以,调用shift($2)
将上一行第 2 列中的值保存到变量 back2
。然后您可以进行实际计算:$3 - back2
。病情$0 < 1
丢弃您没有先前值的第一行。
结果是:
关于gnuplot - 如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和先前记录之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749290/