2012-04-27 3 views
3

Gnuplot에서 겹쳐진 그래프를 만듭니다. 보통과 파라 메트릭 플롯 (그리고 pm3d 맵과 파라 메트릭 서피스)을 섞기 때문입니다. 한 가지를 제외하고는 대부분 잘 작동합니다. 두 플롯에 제목이 있으면 일반적으로 범례가 겹칩니다. 전형적인 예는 다음과 같습니다Gnuplot, Multiplot : 일반 범례와 파라 메트릭 음모를 단일 범례 상자와 함께 사용 하시겠습니까?

#legends.gp 
set term pngcairo enhanced color linewidth 1.5 dashed dashlength 1.4 rounded 
set output "legends.png" 

set title "legends test" 

set multiplot 

# make a box around the legend 
set key box 

set border 15 lw 1 

# fix the margins, this is important to ensure alignment of the plots. 
set lmargin at screen 0.15 
set rmargin at screen 0.98 
set tmargin at screen 0.90 
set bmargin at screen 0.15 

set xlabel "x" 
set ylabel "sin(x)" 

set xrange[0:2*pi] 
set yrange[-1:1] 

set grid x y 

# add single tic at 0.62 
set xtics add ("x0" 0.62) 

# main plot command 
plot sin(x) title "sinus" 

# turn everything off 
set format x "" #numbers off 
set format y "" 
set xlabel ""  #label off 
set ylabel "" 
set border 0  #border off 
unset xtics  #tics off 
unset ytics 
unset grid  #grid off 
unset title  #title off 

#plot vertical line at 0.62 
set parametric 
plot 0.62,t ls 2 lw 2 title "parametric Line" 
unset parametric 

unset multiplot 

Legends.png 내 질문은 지금, 여러 플롯을위한 하나의 전설을 제작하는 간단한 대부분 자동 방법이?

P. 미안하지만, 필자는 예제 파일을 좀 더 복잡하게 만들었습니다. 더 복잡한 기능을 보여줌으로써 미래의 독자들에게 도움이 될 것입니다.

답변

12

여기에 VERY 나를 위해 더러운 해킹이 있습니다. 변경 :

plot sin(x) title "sinus" 

에 :

plot sin(x) title "sinus",NaN w l ls 2 lt 2 title "parametric line" 

그럼 (예컨대 notitle 대신 title "parametric line"의) 타이틀 않고 파라 라인 플롯.

gnuplot은 플로팅 할 때 NaN을 무시하기 때문에 작동합니다. 위의 플로팅에서 두 번째로 설명하는 것은 요소 하나를 범례에 추가하는 것입니다. 선 종류 등을 파라 메트릭 플롯 linestyle/type과 동일하게 지정하여 범례에 올바르게 표시되도록합니다. 제가 알기로,이 모두가 파라 메트릭 플로팅 전체 multiplot의 사업입니다 지내다되도록

물론

, 그냥 ... 편집 할 수 ... 같은 것을 할 수있는 유일한 방법입니다

set xrange [0:2*pi] 
set yrange [-1:1] 
set parametric 
set trange [-10:10] 
plot t,sin(t) title "Hello", 0.62,t title "World" 
아마도 "깨끗한"솔루션입니다

(만의 gnuplot "마법"작업 덜 재미)에의 gnuplot 정보 설명서에서

+0

처음에는이 답변을 좋아하지 않았지만 이제는 NaN 트릭을 몇 번 사용해 보았습니다. 답변 해주셔서 감사합니다! – Jost

+0

+1 "재미있는 gnuplot 마법", 나는 그것을 좋아한다':)' – Christoph

0

:

그래프의 아래에서 위로 수직 라인을 그리려면 x = 3이면 사용 : set arrow from 3, 그래프 0에서 3, 그래프 1 nohead

관련 문제