키의 레이블을 변경하려는 멋진 gnuplot 그래프가 있습니다. 내가 겪고 있는 문제는 fillcurves 옵션에 있습니다. 일을 더 쉽게 하기 위해 사진을 첨부했습니다. 보시다시피 키 레이블은 2 - 1 - 3인 반면 저는 동일한 채우기 곡선 패턴을 유지하면서 1 - 2 - 3을 갖고 싶습니다. 물론 단순히 플롯의 순서를 변경하면 1 - 2 - 3이 되지만 그에 따라 채우기 패턴도 변경되므로 이를 피하고 싶습니다. gnuplot의 가능성을 이용하여 NaN
어떻게든 해킹 해 보았습니다(https://stackoverflow.com/questions/10614654/gnuplot-legend-order) 하지만 여기서 문제는 충전재가 다르다는 것입니다. gnuplot 문서를 확인할 때(http://www.bersch.net/gnuplot-doc/filledcurves.html) 패턴을 고칠 수 있는 방법이 없다는 것을 알고 있지만 어떤 방법이 있어야 한다고 생각합니다. 테스트를 위해 gnuplot 스크립트를 첨부했습니다.
#!/bin/gnuplot
#------------------------------------------------------------------------------
set grid
set key right top
set xrange [20:220]
set style line 20 lw 2 lc rgb 'black'
set border linestyle 20
set style line 1 lw 2.0 lc rgb 'dark-gray'
set style line 2 lw 2.0 lc rgb '#202020'
set style line 3 lw 2.0 lc rgb 'gray'
set style fill transparent pattern 2
#------------------------------------------------------------------------------
A=-1.74959e-14
B=-1.87199e-12
C=1.87756e-9
DeltaBDP=0.45e-9
OffsetBP=0.05e-9
DeltaBP=0.8e-9
OffsetB=0.7e-9
DeltaB=0.8e-9
#
f(x)=A*x**2+B*x+C
g(x)=f(x)+DeltaBDP
# Beta P
h(x)=f(x)+OffsetBP
i(x)=h(x)+DeltaBP
# Beta
j(x)=h(x)+OffsetB
k(x)=j(x)+DeltaB
#------------------------------------------------------------------------------
set terminal epslatex
set output 'tex/foobar.tex'
plot \
'+' using 1:(j($1)*1e9):(k($1)*1e9) with filledcurves closed lc rgb 'dark-gray' t '2' , \
'+' using 1:(f($1)*1e9):(g($1)*1e9) with filledcurves closed lc rgb 'dark-gray' t '1', \
'+' using 1:(h($1)*1e9):(i($1)*1e9) with filledcurves closed lc rgb '#202020' t '3', \
f(x)*1e9 w l ls 1 t '', \
g(x)*1e9 w l ls 1 t '', \
h(x)*1e9 w l ls 2 t '', \
i(x)*1e9 w l ls 2 t '', \
j(x)*1e9 w l ls 3 t '', \
k(x)*1e9 w l ls 3 t ''
#------------------------------------------------------------------------------
답변1
지금은 테스트할 수 없지만 이 페이지의 두 번째 답변이 작동할 수도 있습니다. https://stackoverflow.com/questions/6290504/reordering-gnuplot
답변2
누구든지 동일한 문제가 발생하면 해결책은 간단합니다(언제나 그렇듯이). 키워드를 검색하고 나면 pattern
style
fill
이를 어떻게 해야 할지 분명해집니다. 먼저, 이미 수행했고 @ksyrium도 언급했듯이 그림에서 제목을 설정 해제합니다. 그런 다음 NaN
선택 모드를 사용하면서 그림을 추가합니다 fill pattern <int>
. 이렇게 하면 NaN
필요에 따라 다이어그램의 순서를 변경할 수 있습니다.
plot \
'+' using 1:(j($1)*1e9):(k($1)*1e9) with filledcurves closed lc rgb 'dark-gray' t '1real', \
'+' using 1:(f($1)*1e9):(g($1)*1e9) with filledcurves closed lc rgb 'dark-gray' t '2real', \
'+' using 1:(h($1)*1e9):(i($1)*1e9) with filledcurves closed lc rgb '#202020' t '3real', \
f(x)*1e9 w l ls 1 t '', \
g(x)*1e9 w l ls 1 t '', \
h(x)*1e9 w l ls 2 t '', \
i(x)*1e9 w l ls 2 t '', \
j(x)*1e9 w l ls 3 t '', \
k(x)*1e9 w l ls 3 t '', \
NaN with filledcurves closed fill pattern 2 lc rgb 'dark-gray' t '1', \
NaN with filledcurves closed fill pattern 3 lc rgb 'dark-gray' t '2', \
NaN with filledcurves closed fill pattern 4 lc rgb '#202020' t '3'