我正在使用 gnuplot,我有两个独立的数据文件,我想将数据集 1 的每个 x 轴值与数据集 2 的每个 x 轴值相除。y 轴也一样..我该怎么做??
我可以在 gnuplot 内部执行此操作吗?
答案1
您可以通过 gnuplot 执行此操作,尽管在外部预处理数据可能更容易。
事实上,这非常类似于使用一些脚本在外部预处理数据,这些脚本获取数据并将组合数据写入标准输出。在 gnuplot 中使用管道的语法是
plot " < program arguments"
我通常使用 AWK 来实现此类目的。为了解决您的问题,预处理脚本必须以某种方式在内部连接两个数据集,然后计算所需的值。在 AWK 中,我会这样做:
{
if(secondfile)
print $1, $2, values[$1,$2]/$3
else
values[$1,$2]=$3
}
ENDFILE{secondfile=true}
第一个文件中的值被存储到值数组中(secondfile 为 false)。ENDFILE 模式在任何(此处:第一个)文件的末尾运行,并切换主规则的行为以打印坐标 x 和 y 以及除法值(假设您有“xy 值”列数据格式)。当前 GAWK 4.0 支持 ENDFILE 钩子。
最终的绘图命令可能看起来像
plot "< awk '{if(secondfile) print $1, $2, values[$1,$2]/$3 ; else values[$1,$2]=$3} ENDFILE{secondfile=true}' file1 file2" using 1:2:3
(我不完全明白你想如何计算数量,但你可以用类似的方法来完成)