2012-06-11 15 views
2

gnuplot으로 플롯 할 데이터 파일이 있습니다. 그러나 y 축의 경우 gnuplot이 특정 값 아래의 모든 점을 무시하기를 원합니다. 이 작업을 수행하는 쉬운 방법이 있습니까? 특히 데이터 파일이 큽니다.특정 값 아래의 포인트를 자르는 방법

답변

6

외부 도구를 사용하지 않고 (적어도) 2 가지 방법이 있습니다.

IGNORE_BELOW=50 
set yrange [IGNORE_BELOW:] #ignore points below 50, but your yrange will start at 50. 

두번째 방법은 이용 문에서의 gnuplot 삼원 연산자를 사용하는 것이다. gnuplot은 파일 IO를 수행 할 때 정의되지 않은 값 (1/0)을 자동으로 무시합니다.

IGNORE_BELOW=50 
filter(x)=(x>=IGNORE_BELOW)?(x):(1/0) 
plot 'mydatafile.dat' u 1:(filter($2)) 

이는 공간 분리 된 데이터 파일이 있고 (통상의 gnuplot 방식)를 X 축 및 Y 축에 대한 두 번째 열의 첫 번째 열을 플롯 할 가정한다.

첫 번째 방법은 가장 간단하지만 음영을 내고자하는 범위에있는 포인트를 다듬을 수는 없습니다. 두 번째 방법은 좀 더 못하지만 훨씬 더 일반적이며 gnuplot 데이터 용 모든 종류의 입력 필터를 만드는 데 사용할 수 있습니다.

물론 gnuplot이 파이프를 지원하고 필터를 작성하기 위해 외부 도구를 사용하려는 경우에도 그렇게 할 수 있습니다. 데이터 파일을 입력으로 받아들이고 수정 된 데이터를 표준 출력에 쓰면됩니다. 다음의 gnuplot에서 :

이 문제에 대한
plot "< mytool.ext mydatafile" ... 

, awk은 훌륭한 도구가 될 것입니다.

+0

Perfect. 고마워요 – stupidity

+0

괜찮습니다. 다행이되어 기쁘다. – mgilson