gnuplot에서 선으로 플롯하지만 누락 된 데이터 포인트를 건너 뛰는 방법은 무엇입니까?


20

다음과 같이 매일 관련된 값이 있습니다.

120530    70.1
120531    69.0
120601    69.2
120602    69.5
# and so on for 200 lines

gnuplot에서이 데이터를 선으로 플로팅하면 데이터 포인트가 잘 연결됩니다. 불행히도 1 주일 이상의 데이터 포인트가 누락 될 수 있습니다. Gnuplot은이 간격 동안 긴 선을 그립니다. 연속적으로 gnuplot이 포인트 만 연결하도록하려면 어떻게해야합니까?

스크립트를 사용하여 데이터를 부드럽게 처리하므로 데이터의 전처리가 필요한 솔루션이 좋습니다.

내가 사용하는 것은 다음과 같습니다.

set xdata time
set timefmt "%y%m%d"
plot "vikt_ma.txt" using 1:2 with lines title "first line", \\
     ""            using 1:3 with lines title "second line"

예: gnuplot 예제


문제의 사진은 다음과 같습니다. i.stack.imgur.com/aYH4N.png (어떤 이유로 게시물에 이미지를 추가 할 수 없음). 동그라미 영역을 비워두기를 원합니다.
Anna

수퍼 유저에 오신 것을 환영합니다. 아직이 사이트에서 충분한 평판을 얻지 못했기 때문에 할 수 없습니다. 내 변경 사항이 마음에 들지 않으면 변경 사항을 되돌 리거나 다시 편집 할 수 있습니다.
Baarn

답변:


16

데이터가없는 빈 레코드 (빈 줄)를 넣습니다. 로부터 문서 :

단일 공백 ​​레코드는 플롯에서 불연속을 지정합니다. 빈 레코드로 분리 된 점을 결합하는 선은 없습니다 (선 스타일로 플롯 된 경우).


1
고마워, 이것은 모든 시리즈의 불연속에 효과적입니다. 한 시리즈에서 불연속성이 있지만 다른 시리즈에서는 불연속성이 있다면 어떨까요?
Anna

8
값 대신 대시를 넣어서 작동했습니다.
Anna

나를 위해-2 개의 공백 문자가있는 줄이었습니다.
3kstc

9

누락 된 데이터 포인트의 값으로 숫자가 아닌 문자열을 사용하거나 set datafile missing명령을 사용하여 누락 된 데이터 문자열을 명시 적으로 지정할 수 있습니다.

그런 다음

plot "vikt_ma.txt" using 1:($2) with lines title "first line"

Gnuplot은 공백을 남길 것입니다.


2

x 값 사이의 거리가 임계 값을 초과 할 때 간격을 자동으로 생성하기 위해 다음과 같은 작업을 수행 할 수도 있습니다.

previous=1
current=1
shift(x) = (previous=current, current=x)
yornothing(x,y) = ( shift(x), abs(x-previous)<7200?y:sqrt(0/0))

plot "file.dat" using 1:(yornothing($1,$2)) with lines

"이전"및 "현재"의 초기 값과 임계 값 (위 예에서 "7200")을 조정해야합니다.

"yornothing"함수는 "shift"함수를 사용하여 x의 이전 값 하나를 저장합니다. yornothing이 호출 될 때마다 x와 이전 값의 차이의 절대 값이 임계 값을 초과하는지 여부에 따라 y 또는 "0/0"값을 반환합니다.

0/0 값은 gnuplot이 해당 지점을 무시하도록합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.