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

时间:2014-07-20 13:01:07

标签: 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

但是如果第二个文件的结构点较少,例如

1 1.2
3 1.4
5 1.6
7 1.8

这不再是一个选项,因为两个文件的长度不同。我的第一个选择是用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

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用smooth frequency选项绘制具有相同x

的值的总和
     plot '<cat file1.txt file2.txt' using 1:2 smooth frequency

修改

累积 - &gt;频率

答案 1 :(得分:2)

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

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

如果您想以更复杂的方式组合文件,使用awk可能更灵活。