You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gnuplot中图例(Key)的横向排序(转置)实现方法

遇到这种图例排列顺序的问题很常见,核心原因是gnuplot默认的横向图例是按列优先填充的,而你需要的是行优先排列。不用修改绘图循环的话,有两个实用的解决方案,我帮你整理好了:

解决方案1:使用rowfirst关键字(推荐,适用于gnuplot 5.2及以上版本)

从gnuplot 5.2版本开始,新增了rowfirst选项,它可以直接让横向布局的图例按行优先的顺序填充条目,完美匹配你想要的1 2 3 / 4 5 6 / 7 8 9排列效果。

你只需要在原有的set key命令里加上rowfirst参数即可:

set key top left box horizontal maxcols 3 width 2 spacing 1.5 rowfirst

修改后的完整代码如下:

set terminal postscript eps enhanced size 17cm,13.125cm colour 18 "Helvetica"
set output 'MWETransposeKey.eps'
set xrange [0:1]
set xtics 1
set yrange [-1:1.5]
set ytics 1
# 加入rowfirst参数,让图例按行优先排列
set key top left box horizontal maxcols 3 width 2 spacing 1.5 rowfirst
N = 9.0
# 定义正弦函数
f(x,n) = sin((x - 0.5*(n-1)/N)*(2*pi))
plot for [n=1:N] f(x,n) w l title sprintf("Line %d",n)

运行这段代码后,图例就会按行排列:第一行是Line 1、Line 2、Line 3,第二行是Line 4、Line 5、Line 6,第三行是Line 7、Line 8、Line 9,完全符合你的需求,而且不需要调整绘图循环的顺序。

解决方案2:手动指定图例条目顺序(兼容旧版本gnuplot)

如果你的gnuplot版本低于5.2,没有rowfirst选项,可以通过手动指定图例条目顺序的方式实现需求。原理是先绘制所有曲线但不显示默认图例,再逐个指定每个曲线的图例标题和顺序:

set terminal postscript eps enhanced size 17cm,13.125cm colour 18 "Helvetica"
set output 'MWETransposeKey.eps'
set xrange [0:1]
set xtics 1
set yrange [-1:1.5]
set ytics 1
set key top left box horizontal maxcols 3 width 2 spacing 1.5
N = 9.0
f(x,n) = sin((x - 0.5*(n-1)/N)*(2*pi))

# 先绘制所有曲线,暂时不显示图例(设置title为空)
plot for [n=1:N] f(x,n) w l title ""

# 手动按1-9的顺序指定每个图例条目
set key entry 1 title "Line 1"
set key entry 2 title "Line 2"
set key entry 3 title "Line 3"
set key entry 4 title "Line 4"
set key entry 5 title "Line 5"
set key entry 6 title "Line 6"
set key entry 7 title "Line 7"
set key entry 8 title "Line 8"
set key entry 9 title "Line 9"

# 重新绘制以应用新的图例设置
replot

这个方法完全脱离绘图循环的顺序限制,能精准控制每个图例条目的位置。

为什么invert不符合你的需求?

你之前尝试的invert关键字是用来反转整个图例的条目顺序,它会把原来的列优先顺序直接倒转,得到的是3 6 9 2 5 8 1 4 7,本质还是列优先的反转,并不是你需要的行优先排列,所以这个参数不适用当前场景。

内容的提问来源于stack exchange,提问作者BubbleTrouble

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:47:15