如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和以前记录之间的差异
我在一个文本文件中有3列数据。第一列是时间。第二列和第三列是我的变量参数。我的目的是绘制第3列数据的当前值和第2列数据的前一个值与第1列当前值之间的差值。这有点棘手,因为gnuplot通常只能访问当前行的值。但是,您可以使用语句在如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和以前记录之间的差异,gnuplot,rows,multiple-columns,difference,Gnuplot,Rows,Multiple Columns,Difference,我在一个文本文件中有3列数据。第一列是时间。第二列和第三列是我的变量参数。我的目的是绘制第3列数据的当前值和第2列数据的前一个值与第1列当前值之间的差值。这有点棘手,因为gnuplot通常只能访问当前行的值。但是,您可以使用语句在中巧妙地保留有限数量的先前值 不幸的是,您没有给出任何示例数据,因此这里是我的测试数据文件test.dat(没有时间,您需要自己调整): 以下脚本绘制第3列中的当前值与第2列中的上一个值之间的差值: back2 = back1 = 0 shift(x) = (back2
中巧妙地保留有限数量的先前值
不幸的是,您没有给出任何示例数据,因此这里是我的测试数据文件test.dat
(没有时间,您需要自己调整):
以下脚本绘制第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
back2=back1=0
移位(x)=(后退2=后退1,后退1=x)
使用0:(移位($2),$0<1-1/0:$3-back2)w lp pt 7 ps 2绘制“test.dat”
这里发生的基本情况如下:
在语句中,可以使用
语句分隔多个语句,例如使用逗号分隔赋值。只有一列中的最后一个表达式用作实际数据值
第二列的shift
函数首先将前一行的值分配给变量back2
,然后将当前值分配给变量back1
。因此,调用shift($2)
将前一行第2列中的值保存到变量back2
。然后,您可以按$3-back2
进行实际计算。条件$0<1
将丢弃没有先前值的第一行
结果是:
请更新您的问题,以显示您的数据样本。
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