Я думаю, что это может быть хорошая работа для paste
.
plot "<paste A B" u 1:($2-$4) w points #whatever line style you want...
#xA #yA-yB
Для файла, где хА! = Хв, я немного неясно, хотите ли вы, чтобы построить только набор точек с являются общими для обоих (пересечение двух множеств) или вы хотите построим все точки (объединение множеств). Объединение легко:
plot "<paste A B" u 1:($2-$4) w points ls 1,\
"<paste A B" u 3:($2-$4) w points ls 1
пересечение трудно, используя только инструменты командной строки UNIX (особенно, если вы хотите, чтобы сохранить порядок вашего входа)
с помощью Python, хотя, это не так уж плохо ...
#joinfiles.py
import sys
f1=sys.argv[1]
f2=sys.argv[2]
xA,yA=zip(*[map(float,line.split()) for line in f1.readlines()])
xB,yB=zip(*[map(float,line.split()) for line in f2.readlines()])
f1.close()
f2.close()
for i,x in enumerate(xA):
if(x in xB):
sys.stdout.write('%f %f %f\n'%(x,yA[i],yB[i]))
, а затем из Gnuplot:
plot "<python joinfiles.py A B" u 1:($2-$3) #...
ли XA и XB элементы всегда * точно * соответствия, вплоть до го e символов? Или может быть объединено 5.0000 с 5.0001? –
они точно такие же. столбец слияния представляет собой целое число без знака. –
«все элементы, которые находятся в обоих» - это (для меня) неоднозначно. Вы хотите союз или перекресток? Похоже, вы хотите пересечение, но если вы хотите союз, я предоставил решение для этого ниже. – mgilson