我有
FileSFC1:包含某些数据
FileSFC2:包含一些其他数据
现在我需要做的是将FileSFC1的第二列与FileSFC2的第二列分开,然后绘制此结果。所以形式如下:
plot ( FileSFC1 using 1:1 / FileSFC2 using 1:1 ) * 100
所以基本上情节将是两个文件中列的百分比。请帮忙。
答案 0 :(得分:17)
Gnuplot只能处理来自同一“文件”或数据流的数据列。你可以做的是使用plot '< bash command'
构造。当plot
的参数以<
开头时,会发生什么,参数的其余部分被解释为bash命令,并且该命令的输出是绘制的。所以:
plot '< paste FileSFC1 FileSFC2' u (100*$2/$4)
这假设两个文件都有两列,并且您想要绘制每个文件中第二列的百分比。要对数据列执行操作,语法是将参数括在括号中的using
和带有美元符号的列号前缀。
答案 1 :(得分:3)
Andyras的回答是你正在寻找的答案。
我只是想用这个结构添加它,你不能使用bash的进程替换<(
,这是耻辱,因为在大多数情况下,你必须做额外的流进动(grepping或删除行等等。)
为此,您需要回答这个问题Gnuplot and 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)