좋은 방법은 labels
플로팅 스타일이다. 그러나 실제 점선 영역 외부에 레이블을 배치하는 데는 몇 가지 어려움이 있습니다. 일반적으로 점과 레이블은 잘립니다.
당신은 x 및 yrange를 해결하기 위해 stats
어쨌든을 사용하고 있기 때문에, 여기에 내가 이런 짓을 했을까 방법입니다
예와 고정 오른쪽 여백을 설정합니다 set rmargin 20
. 오른쪽 여백은 20 자 너비입니다. set rmargin at screen 0.8
과 같은 절대 좌표를 사용할 수도 있지만, 레이블을 배치 할 여백이 필요하므로 문자 단위가 적절합니다.
플롯 영역의 오른쪽 위 모서리를 참조 점 (STATS_max_x, STATS_max_y)
으로 사용하고 offset
매개 변수를 사용하고 몇 가지 문자 폭으로 다시 이동하여 레이블을 이동하십시오.
그래서 같이 보일 수 있습니다 완전한 스크립트는 다음과 같습니다
# calculate the number of points
stats 'file.txt' using 1:2 nooutput
# if you want to have a fixed range for all plots
set xrange [STATS_min_x:STATS_max_x]
set yrange [STATS_min_y:STATS_max_y]
set terminal pngcairo size 800,400
outtmpl = 'output%07d.png'
v_label(x, y) = sprintf('vx = %.2f vy = %.2f', x, y)
c_label(x, y) = sprintf('x = %d y = %d', x, y)
t_label(t) = sprintf('t = %.2f', t)
set rmargin 20
do for [i=0:STATS_records-1] {
set output sprintf(outtmpl, i)
plot 'file.txt' every ::::i with lines title sprintf('n = %d', i),\
'' every ::i::i using (STATS_max_x):(STATS_max_y):(t_label($3)) with labels offset char 11,-5 notitle,\
'' every ::i::i using (STATS_max_x):(STATS_max_y):(c_label($1, $2)) with labels offset char 11,-6.5 notitle,\
'' every ::i::i using (STATS_max_x):(STATS_max_y):(v_label($4, $5)) with labels offset char 11,-8 notitle
}
set output
참고는 rmargin
및 offset
설정은 터미널, 터미널 크기, 글꼴 및 글꼴 크기에 달려있다. 더 좋은 라벨 배치를 위해 당신은 자신의 정렬을 변경 별도로 어쩌면 vx
및 vy
레이블을 배치하는 것이 좋습니다.
다른 방법으로 각각의 반복에서 당신은 당신의 데이터 파일에서 현재 행을 추출하여 수동으로 레이블을 설정합니다. 그러나 외부 도구를 사용하여 줄을 추출해야합니다.
do for [i=0:STATS_records-1] {
line = system(sprintf("sed -n %dp file.txt", i+2))
set label 1 at screen 0.9, screen 0.9 sprintf("t = %.2f", real(word(line, 3)))
set label 2 at screen 0.9, screen 0.88 sprintf("x = %.2f y = %.2f", real(word(line, 1)), real(word(line, 2)))
plot 'file.txt' every ::::i with lines title sprintf('n = %d', i)
}
어떤 변형이 더 잘 맞는지 알 수 없습니다. 줄 번호로 i+2
을 사용하여 자동으로 검색되지 않는 주석 처리 된 헤더 행을 건너 뜁니다. 라벨 (set label 1
)에 태그를 사용하면 이전 라벨을 덮어 씁니다. 이상하다
.터미널에서 "23 행 : 경고 : 유효한 점이없는 데이터 파일 건너 뛰기"가 표시되며 모든 _other_ 프레임에 레이블이 나타납니다. 또한 t 및 vx 및 vy 레이블 만 업데이트됩니다. xy 레이블은 xy 축 (파티클이 타원으로 움직이는 경우)에서만 바뀌므로 (0,1), (-1,0) 등이됩니다. – vardonir
스크립트를 게시 할 때 두 (Windows 4.6.5, Linux 4.6.0, 4.6.5 및 5.0rc2). 이 최소한의 구성을 시도 했습니까? – Christoph
오, 전 ~ 2000 라인으로 전체 프로그램을 사용하고있었습니다. 나는 두 개의 데이터 라인을 가지고 시험해 보았고, 잘 작동했다. – vardonir