Gnuplot 如何增加Filled Curves打印样式的关键符号?

Gnuplot 如何增加Filled Curves打印样式的关键符号?,gnuplot,legend-properties,Gnuplot,Legend Properties,我想增加填充曲线打印样式的关键符号。我可以使用set key samplen控制长度,但不能控制其高度。我可以达到想要的结果,但使用的方法是繁琐的,取决于大小打印和字体使用 我使用了datafile.datfile 1 1270 834 2 1112 900 3 794 982 4 656 710 这个密码呢 reset set encoding utf8 set terminal pngcairo size 500,500 font "Segoe

我想增加
填充曲线
打印样式的关键符号。我可以使用
set key samplen
控制长度,但不能控制其高度。我可以达到想要的结果,但使用的方法是繁琐的,取决于大小打印和字体使用

我使用了
datafile.dat
file

1   1270    834
2   1112    900
3    794    982
4    656    710
这个密码呢

reset
set encoding utf8
set terminal pngcairo size 500,500 font "Segoe UI,10"

set output "boxes.png"
set key title "{/:Bold Auto key}" Left reverse samplen 2

set tics out nomirror
set xrange [0:5]
unset xtics

set palette defined (\
    1 "dark-violet",\
    2 "#009e73",\
    3 "#56b4e9",\
    4 "#e69f00"\
)

unset colorbox

set errorbars small

set macros
style = "solid 0.5 border lt -1"
set style fill @style
# -----------------------------------------------
posX   = 0.55   # x position (at screen)
posY   = 0.9    # y position (at screen)
shiftY = 0.035  # shift in y direction (from up to down)
sizeX  = 0.020  # box width
sizeY  = 0.012  # box height

set label "{/:Bold Manual key}" at screen posX, posY left offset 0,1.2

set obj rect center screen posX,posY-0*shiftY size screen 2*sizeX,2*sizeY fc ls 1 fs @style
set obj rect center screen posX,posY-1*shiftY size screen 2*sizeX,2*sizeY fc ls 2 fs @style
set obj rect center screen posX,posY-2*shiftY size screen 2*sizeX,2*sizeY fc ls 3 fs @style
set obj rect center screen posX,posY-3*shiftY size screen 2*sizeX,2*sizeY fc ls 4 fs @style
set arrow from screen posX-sizeX, posY-4*shiftY to screen posX+sizeX, posY-4*shiftY lw 3 nohead

set label "Method 1"  at screen posX, posY-0*shiftY left offset 2,0.05 
set label "Method 2"  at screen posX, posY-1*shiftY left offset 2,0.05 
set label "Method 3"  at screen posX, posY-2*shiftY left offset 2,0.05 
set label "Method 4"  at screen posX, posY-3*shiftY left offset 2,0.05 
set label "Reference" at screen posX, posY-4*shiftY left offset 2,0.05 
# -----------------------------------------------

plot \
    keyentry w filledcurves ls 1 title "Method 1",\
    keyentry w filledcurves ls 2 title "Method 2",\
    keyentry w filledcurves ls 3 title "Method 3",\
    keyentry w filledcurves ls 4 title "Method 4",\
    "datafile.dat" u 1:2:0 w boxes lc palette notitle,\
    "" u 1:3:(0.5) w xerrorbars ls -1 pt -1 lw 3 title "Reference"
做这个情节


还有别的方法吗?

还有别的方法吗?是的,但是有点难看。键样本的高度由键标题使用的字体大小决定。通过将键设置为使用大字体,然后覆盖每个打印标题的实际文本,可以滥用此选项

下面的示例将键字体设置为20点,并在编写标题文本时使用增强文本模式将大小减小回10点。您可以使用和每个位忽略复杂的
,这只是生成一些要打印的假数据的一种方式

set term pngcairo size 500,500 font "ArnoPro,10"
set output "boxes.png"
$DATA << EOD
5
2
4
3
1
EOD

set yrange [0:6]
set style fill solid 1.0 border lc "black"
set boxwidth 0.3
set key font "ArnoPro,20" enhanced

plot for [i=1:5] $DATA every ::(i-1)::(i-1) using (i):(column(1)) with boxes \
    title sprintf("{/ArnoPro=10 Method %d}", i)
设置术语pngcairo大小500500字体“ArnoPro,10”
设置输出“box.png”

$DATA还有其他方法吗?是的,但是有点难看。键样本的高度由键标题使用的字体大小决定。通过将键设置为使用大字体,然后覆盖每个打印标题的实际文本,可以滥用此选项

下面的示例将键字体设置为20点,并在编写标题文本时使用增强文本模式将大小减小回10点。您可以使用
每个位忽略复杂的
,这只是生成一些要打印的假数据的一种方式

set term pngcairo size 500,500 font "ArnoPro,10"
set output "boxes.png"
$DATA << EOD
5
2
4
3
1
EOD

set yrange [0:6]
set style fill solid 1.0 border lc "black"
set boxwidth 0.3
set key font "ArnoPro,20" enhanced

plot for [i=1:5] $DATA every ::(i-1)::(i-1) using (i):(column(1)) with boxes \
    title sprintf("{/ArnoPro=10 Method %d}", i)
设置术语pngcairo大小500500字体“ArnoPro,10”
设置输出“box.png”

$DATA基于@Ethan的解决方案,您还可以绘制超出范围的非常粗的虚线,或者使用
NaN

plot for [i=1:5] NaN w l lw 13 lt i ti sprintf(" Method %d",i)
代码:

### enlarge height of key sample
reset session

$DATA << EOD
5
2
4
3
1
EOD

set yrange [0:6]
set style fill solid 1.0 border lc "black"
set boxwidth 0.3
set key samplen 2 reverse

plot for [i=1:5] $DATA every ::(i-1)::(i-1) using (i):(column(1)) with boxes \
    title sprintf("Method %d", i), \
    for [i=1:5] NaN w l lw 13 lt i ti sprintf(" Method %d",i)
### end of code
###放大关键样本的高度
重置会话

$DATA基于@Ethan的解决方案,您还可以绘制超出范围的非常粗的虚线,或者使用
NaN

plot for [i=1:5] NaN w l lw 13 lt i ti sprintf(" Method %d",i)
代码:

### enlarge height of key sample
reset session

$DATA << EOD
5
2
4
3
1
EOD

set yrange [0:6]
set style fill solid 1.0 border lc "black"
set boxwidth 0.3
set key samplen 2 reverse

plot for [i=1:5] $DATA every ::(i-1)::(i-1) using (i):(column(1)) with boxes \
    title sprintf("Method %d", i), \
    for [i=1:5] NaN w l lw 13 lt i ti sprintf(" Method %d",i)
### end of code
###放大关键样本的高度
重置会话
$DATA