如何在gnuplot中添加两个具有不同x基的文件

如何在gnuplot中添加两个具有不同x基的文件,gnuplot,Gnuplot,如果有两个文件的结构都是这样的 1 1.2 2 1.3 3 1.4 4 1.5 5 1.6 6 1.7 您可以通过执行以下操作简单地添加它们 p "<paste file1.txt file2.txt" u 1:($2+$4) w l 这不再是一个选项,因为两个文件的长度不同。我的第一个选择是使用vim手动删除不必要的点,但是由于有数百个文件,我想知道是否有一个简单的gnuplot解决方案 我想忽略只出现在其中一个文件中的点。应添加出现在两个文件中的点 按照@TomFenech的建议,

如果有两个文件的结构都是这样的

1 1.2
2 1.3
3 1.4
4 1.5
5 1.6
6 1.7
您可以通过执行以下操作简单地添加它们

p "<paste file1.txt file2.txt" u 1:($2+$4) w l
这不再是一个选项,因为两个文件的长度不同。我的第一个选择是使用vim手动删除不必要的点,但是由于有数百个文件,我想知道是否有一个简单的gnuplot解决方案

我想忽略只出现在其中一个文件中的点。应添加出现在两个文件中的点

按照@TomFenech的建议,我使用了
awk
和gnuplot的
every
来只绘制奇数点

plot '<awk ''FNR==NR {a[FNR]=$1; cnt=FNR} {x[$1] += $2} END {for(i=1; i<=cnt; ++i) print a[i],x[a[i]]}'' test1.txt test2.txt' u 1:2 every 2::1 w l

plot'您可以使用
平滑频率
选项以相同的
x

     plot '<cat file1.txt file2.txt' using 1:2 smooth frequency

plot'您可以使用awk组合这两个文件:

plot '<awk ''{a[$1]+=$2} END {for (i in a) print i, a[i]}'' file1.txt file2.txt'

plot'我认为编写一个简单的shell脚本来自动剪切点会更容易。您需要重塑文件,这在gnuplot之外最容易完成,例如使用
awk
。一个重要的考虑因素是,您的数据是以固定的x值(如示例中所示)进行评估的,还是不同的数据文件可能具有不一致的x值,因此您需要进行某种插值。如果您从两个文件中都包含了足够多的样本,以显示锯齿状行为,考虑到出现的混乱(从各种评论判断):你希望合并发生什么?相等的x值会发生什么,其他x值会发生什么?您的意思是
平滑频率
。是的,这看起来是个好主意!如果我尝试这个,我会得到一个Z字形的物体。把它和每一个元素结合起来,只画出奇数点,会产生奇怪的效果results@user3165456对于两个x值相等的点,您还不清楚应该发生什么。使用
平滑频率
将具有相同x值的点相加。如果需要平均值,则应使用
平滑唯一
。如果需要两个具有相同x值的点,则需要添加它们,如果该点仅出现在其中一个文件中,则我希望忽略它。你说得对,这在我最初的问题中一点也不清楚!好的,那么我猜你不能使用任何平滑函数;)如果我尝试这样做,我会得到与使用
平滑频率
选项相同的锯齿形对象,但是,我稍微更改了awk语句,并将其与
每一个
相结合,以仅打印像这样的“绘图”的奇数行@user3165456很高兴它工作正常。我猜x值在您的数据中并不完全匹配,否则我不明白您为什么会对这两种方法中的任何一种有任何问题。也许您需要进行一些舍入或插值以使值匹配。
plot '<awk ''{a[$1]+=$2} END {for (i in a) print i, a[i]}'' file1.txt file2.txt'