14

我有

FileSFC1:包含某些数据
FileSFC2:包含某些其他数据

现在我需要做的是将 FileSFC1 的第二列与 FileSFC2 的第二列相除,然后绘制这个结果。所以某种形式的东西:

plot ( FileSFC1 using 1:1 / FileSFC2 using 1:1 ) * 100

所以基本上情节将是两个文件中列的百分比。请帮忙。

4

2 回答 2

21

Gnuplot 只能操作来自同一“文件”或数据流的数据列。你可以做的是使用plot '< bash command'建筑。当参数以发生的情况plot开头时,参数<的其余部分被解释为 bash 命令,并且该命令的输出就是绘制的内容。所以:

plot '< paste FileSFC1 FileSFC2' u (100*$2/$4)

这假设两个文件都有两列,并且您想要绘制每个文件中第二列的百分比。要对数据列执行操作,语法是将参数括using在括号中,并在列号前面加上美元符号。

于 2013-03-07T12:45:35.687 回答
3

Andyras 的答案就是您要找的答案。

我只是想用这个结构补充一点,你不能使用 bash 的进程替换<(,这很遗憾,因为在大多数情况下,你必须做额外的流处理(grepping 或删除行等)

为此,您需要Gnuplot 和 Bash process-substitution这个问题的答案,我将在这里简要举例说明:

# Will concatenante FileSFC1 with the first 200 lines of FileSFC2
plot '< exec bash -c "paste <(cat FileSFC1) <(head -n 200 FileSFC2)"' u (100*$2/$4)
于 2014-05-02T09:20:40.160 回答