gnuplot - 如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和先前记录之间的差异

标签 gnuplot rows multiple-columns difference

我的文本文件中有 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丢弃您没有先前值的第一行。

结果是:

enter image description here

关于gnuplot - 如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和先前记录之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749290/

相关文章:

graph - 来自 Gnuplot 的相邻或并排图形 - Latex 终端

bash - gnuplot 和 bash 进程替换

javascript - php 行,每行都有一个我想重定向到外部页面的按钮

android - 不显示动态行

r - 将数据帧列表 : not a simple rbind, 第二行转换为新列

python - 从 python 中的数据框中删除多列

GNUPlot 颜色反转

gnuplot - 绘制多天的相同时间段

html - 从上到下而不是从左到右列出列中的元素

ruby-on-rails - 多个字段的唯一索引......但不是你想的那样