2016-10-18 4 views
0

두 개의 블록으로 구성된 데이터 파일을 하나의 빈 줄로 구분하여 블록 1과 블록 2의 데이터 사이의 차이를 음영으로 표시하고자합니다 (예 :Gnuplot : 다른 블록에있는 데이터로 작업하기

).
plot 'a.dat' using 1:($2_1-$2_2) 

여기에서 $2_1은 "블록 1의 데이터, 열 2"및 블록 2의 열 2 "의 데이터 $2_2"을 의미한다고 가정합니다. Gnuplot 내에서 가능합니까? 그렇다면 어떻게해야합니까?

덕분에, 톰

답변

0

이 작업은 그러나, 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에 제 1 및 제 2 열을 저장하고 y. 그런 다음 비어 있지 않은 행 (NF>0)에 도달 할 때까지 모든 연속 공백 행을 건너 뜁니다. 또한 입력 파일이 광고의 위치를 ​​기억하고 함께 x 좌표 제 2 블록의 각 행에 대한 출력 첫번째 블록, 즉 데이터 파일의 Y 좌표 대응 같은

1 2 
2 4 
3 6 



1 4 
2 8 
3 12 

은 ...

이 두 블록의 x 좌표가 일치한다고 가정
1 2 4 
2 4 8 
3 6 12 

로 변환 될 것이다

관련 문제