gnuplot 如何使用多图将 legend/Key 放在第三列

gnuplot how to put legend/Key in third column with multiplot

如何将 legend/Key 放在第三列(此处)的地块之外?

我的标签名称存储在国家名称列表中。所以每张图中的4条曲线对应一个国家

您可以在这里找到数据:https://www.ecdc.europa.eu/en/publications-data/data-national-14-day-notification-rate-covid-19

数据看起来像这样:

France,FRA,Europe,67012883,cases,1,2020-07,0.00895350226910846,12,"Epidemic intelligence, national weekly data"
France,FRA,Europe,67012883,cases,0,2020-08,0.00149225037818474,12,"Epidemic intelligence, national weekly data"
France,FRA,Europe,67012883,cases,118,2020-09,0.1760855446258,130,"Epidemic intelligence, national weekly data"
France,FRA,Europe,67012883,cases,996,2020-10,1.66236692129781,1126,"Epidemic intelligence, national weekly data"

我的脚本:

#system("wgets https://opendata.ecdc.europa.eu/covid19/nationalcasedeath/csv -P $PWD -O data1.csv")
Countries = "France Italy Belgium Luxembourg"
categories = "cases death"

reset
set term wxt font ',11' size 1200,800
set datafile separator ","
set grid
set key outside right top

timefmt = "%Y-%W"
set xtics time format timefmt rotate by -45
SECPERWEEK = 3600.*24.*7.
Y_W(col) = timecolumn(col,timefmt) + SECPERWEEK * (strcol(col)[6:7] - 1)

set multiplot layout 3,3
do for [category in categories]{
    set title sprintf("Nbre %s",category)
    plot for [country in Countries] sprintf("<grep %s.*%s data1.csv",country,category) u (Y_W(7)):6 notitle w l lw 2
}

#PUT legend
set multiplot next

#t sprintf("Nbre %s %s",category,country)

do for [category in categories]{
    set title sprintf("%s %s","%",category)
    plot for [country in Countries] sprintf("<grep %s.*%s data1.csv",country,category) u (Y_W(7)):8 notitle w l lw 2
}
set multiplot next
#sprintf("%s %s %s","%",category,country)

do for [category in categories]{
    set title sprintf("Cumul %s",category)
    plot for [country in Countries] sprintf("<grep %s.*%s data1.csv",country,category) u (Y_W(7)):9 notitle w l lw 2
}
set multiplot next
#t sprintf("Cumul %s %s",category,country)

unset multiplot

一个可能的建议:使用屏幕坐标作为键,只为一张图显示标题。像这样:

代码:(编辑:在第一个情节之后简单地 unset key

### only one key for multiplot
reset session

Countries = "France Italy Belgium Luxembourg"

set key at screen 0.9, 0.9
set multiplot layout 3,3 columnsfirst
    do for [i=1:6] {
        plot for [j=1:words(Countries)] j*x**i ti word(Countries,j)
        unset key
    }
unset multiplot
### end of code

结果:

加法:

当在彼此之上多次绘制密钥时,例如在 wxt 终端中,它可能看起来像粗体(可能取决于终端)。请参见下面的示例。顶行:6 个键在彼此之上,底行:只有一个键。所以在第一个情节之后关掉钥匙可能会更好。