2017-04-21 5 views
0

나는 타임 스탬프와 주석을 포함하고있는 파일로부터 어떤 데이터를 플롯하려고 시도하고있다.Gnuplot 거리가 변하는 레이블이있는 점을 그릴 때

지금까지 woking은 모든 주석을 레이블과 함께 시간을 표시하는 것이지만 주석이 겹치지 않도록 지능적인 간격을 찾고 있습니다.

나는 또한 댓글을 필터링하는 방법을 찾고 있습니다. 주석이 숨겨지기로되어 있는지 아닌지를 지정하는 다른 열이 있습니다. 나는 conditional plotting이 한 Statment을 사용하고 있습니다 :

plot 'data' using $1:0:($7==0?$6:" ") 

그것은 데이터 포인트를 필터링하는 대신에 문자열 ($ 6) 한 Statment에 해당하는 경우는 0을 보여주는 것을 보여주는 것입니다.

거리가 너무 작 으면 시간을 수동으로 조작하여 간격을 둘 수 있지만 작동 필터는 큰 도움이 될 것이라고 생각합니다.

전에 이런 종류의 문제를 겪은 사람이 있습니까? 나는 지금까지 나의 진도에 대한 그림을 아래에 추가했다.

의견을 보내 주시면 감사하겠습니다. 고맙습니다.

Plot

답변

0

using 표현식 안에서 텍스트 필드를 사용하려면 stringcolumn 함수를 사용해야합니다. 예를 들어,

plot 'data' using $1:(0):($7==0 ? stringcolumn(6) : " ") with labels 

과 같은 내용이 질문의 필터링 측면에서 작동해야합니다.

+0

완벽하게 작동합니다! 조건 라벨을 플로팅하면 메모의 양이 크게 줄어들 기 때문에 공백은 더 이상 중요하지 않습니다. 도와 주셔서 정말로 고맙습니다! –

0

레이블이 중복되지 수 있도록하기 위해, 무엇을 아래로 rotate by -60와 길에서 그들을 회전 어떻습니까?

기본 하단 여백은 그 (것)들을 끊을 것이고,이 경우 set bmargin 10과 같은 것으로 확장해야합니다.

조건부로 플롯하려면 조건이 거짓 일 때 0 값이 아닌 숫자 오류를 생성해야합니다. 가장 간단한 방법은 수 있습니다 : 같이

는 대신 조건 플로팅의
plot 'data' using $1:0:($7==0?$6:1/0) 

, 당신은 명시 적으로 레이블을 설정할 수 있습니다 : 오래된 스크립트에서 하나가 종종에 같이 NaN를 생성하는 데 사용 1/0을보고

plot 'data' using $1:0:($7==0?$6:NaN) 

있지만, :

는 생산
set xdata time 
set timefmt "%d/%m/%y\t%H%M" 
set format x "%d/%m\n%H:%M" 
set xrange [ "1/6/93":"1/11/93" ] 
set grid 
set style data fsteps 
set bmargin 10 
set label 1 'Look at the spike here' at '01/10/93',0.05 rotate by -45 point 
# https://github.com/gnuplot/gnuplot/blob/master/demo/timedat.dat 
plot 'timedat.dat' using 1:4 notitle 

resulting plot

,536,
+0

어떻게 든 gnuplot은 조건부 플롯과 함께 문자열 출력을 좋아하지 않습니다. 명시 적 라벨을 사용하는 것이 좋은 대안이지만 댓글의 양은 여전히 ​​증가 할 것입니다. 응답을 보내 주셔서 감사합니다 –