我有
FileSFC1:包含某些数据
FileSFC2:包含某些其他数据
现在我需要做的是将 FileSFC1 的第二列与 FileSFC2 的第二列相除,然后绘制这个结果。所以某种形式的东西:
plot ( FileSFC1 using 1:1 / FileSFC2 using 1:1 ) * 100
所以基本上情节将是两个文件中列的百分比。请帮忙。
Gnuplot 只能操作来自同一“文件”或数据流的数据列。你可以做的是使用plot '< bash command'
建筑。当参数以发生的情况plot
开头时,参数<
的其余部分被解释为 bash 命令,并且该命令的输出就是绘制的内容。所以:
plot '< paste FileSFC1 FileSFC2' u (100*$2/$4)
这假设两个文件都有两列,并且您想要绘制每个文件中第二列的百分比。要对数据列执行操作,语法是将参数括using
在括号中,并在列号前面加上美元符号。
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)