Эта задача, скорее всего, не представляется возможным непосредственно в Gnuplot, однако, можно предобработки файл данных первого, используя, например, поглазеть, а затем построить измененный файл. Например:
dataFile="a.dat"
plotCmd(fname)=sprintf("<gawk '\
BEGIN{mode=0;l=0;} \
mode==0{if(NF==0){mode=1;}else{x[NR]=$1;y[NR]=$2;}} \
mode==1{if(NF>0){mode=2;l=NR;}} \
mode==2{print $1,y[NR-l+1],$2}' %s", fname)
plot plotCmd(dataFile) u 1:($2-$3) w l
Сценарий простака читает файл и сохраняет первый и второй столбец в массивы x
и y
, пока он не достигнет пустой строки (нулевое количества полей). Затем он пропускает все последовательные пустые строки, пока не достигнет непустой строки (NF>0
). Она запоминает положение этой линии во входном файле, а затем выводит для каждой строки во втором блоке координату х вместе с соответствующим Y-координатой от первого блока, то есть, в файле данные, такие как
1 2
2 4
3 6
1 4
2 8
3 12
будет преобразован в
1 2 4
2 4 8
3 6 12
Это предполагает, что х-координаты в обоих блоках совпадают ...