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

Gnuplot 5.4多图布局下如何在绘图下方添加文本并保持尺寸

Gnuplot 5.4 添加全局图注的解决方法

问题描述

我正在使用Gnuplot 5.4版本,通过以下代码生成了2×2布局的4幅绘图:

set size 1, 1
set origin 0.0, 0.0
set term postscript eps enhanced color 'Helvetica' 15
set output 'sig_tau2.eps'
set multiplot layout 2,2
set style fill solid 1.0 noborder
set size square
set xtics ("0" 0, "175" 175, "350" 350) font "Helvetica,15"
set ytics ("0" 0, "2" 2, "4" 4) font "Helvetica,15"
set cbtics ("-0.0075" -0.0075, "0" 0, "0.0075" 0.0075) font "Helvetica,15"
set xlabel "{/Symbol t}" font "Helvetica,15"
set label "{/Symbol s}" font "Helvetica,15" at graph -0.3, graph 0.6
set label "{Re{/Symbol z}_{max}}" font "Helvetica,15" at graph 1.3, graph 0.5
set pm3d map #Achte auf das Format der Datendatei (Leerzeilen!)
set cbrange [-0.0075:0.0075]
set xrange [0:350]
set yrange [0:4]
set palette defined (-0.0075 0 0 1, 0 0 1 0, 0 "yellow", 0.0075 1 0 0)
set colorbox
set title "(a)" font "Helvetica Bold,15"
unset key
splot "1.dat" u 1:2:4 title""

unset xtics
unset ytics
unset cbtics
unset xlabel
unset label
unset label
unset cbrange
unset xrange
unset yrange
unset pm3d

set xtics ("0" 0, "175" 175, "350" 350) font "Helvetica,15"
set ytics ("0" 0, "2" 2, "4" 4) font "Helvetica,15"
set cbtics ("-0.0075" -0.0075, "0" 0, "0.0075" 0.0075) font "Helvetica,15"
set xlabel "{/Symbol t}" font "Helvetica,15"
set label "{/Symbol s}" font "Helvetica,15" at graph -0.3, graph 0.6
set label "{Re{/Symbol z}_{max}}" font "Helvetica,15" at graph 1.3, graph 0.5
set pm3d map #Achte auf das Format der Datendatei (Leerzeilen!)
set cbrange [-0.0075:0.0075]
set xrange [0:350]
set yrange [0:4]
set palette defined (-0.0075 0 0 1, 0 0 1 0, 0 "yellow", 0.0075 1 0 0)
set colorbox
set title "(b)"
unset key
splot "2.dat" u 1:2:4 title""

unset xtics
unset ytics
unset cbtics
unset xlabel
unset label
unset label
unset cbrange
unset xrange
unset yrange
unset pm3d

set xtics ("0" 0, "175" 175, "350" 350) font "Helvetica,15"
set ytics ("0" 0, "4" 4, "8" 8) font "Helvetica,15"
set cbtics ("-0.0075" -0.0075, "0" 0, "0.0075" 0.0075) font "Helvetica,15"
set xlabel "{/Symbol t}" font “Helvetica,15"
set label "{/Symbol s}" font "Helvetica,15" at graph -0.3, graph 0.6
set label "{Re{/Symbol z}_{max}}" font "Helvetica,15" at graph 1.3, graph 0.5
set pm3d map #Achte auf das Format der Datendatei (Leerzeilen!)
set cbrange [-0.0075:0.0075]
set xrange [0:350]
set yrange [0:8]
set palette defined (-0.0075 0 0 1, 0 0 1 0, 0 "yellow", 0.0075 1 0 0)
set colorbox
set title "(c)"
unset key
splot "3.dat" u 1:2:4 title""

unset xtics
unset ytics
unset cbtics
unset xlabel
unset label
unset label
unset cbrange
unset xrange
unset yrange
unset pm3d

set xtics ("0" 0, "175" 175, "350" 350) font "Helvetica,15" 
set ytics ("0" 0, "6" 6, "12" 12) font "Helvetica,15"
set cbtics ("-0.0075" -0.0075, "0" 0, "0.0075" 0.0075) font "Helvetica,15"
set xlabel "{/Symbol t}" font "Helvetica,15"
set label "{Figure 2: Stability region of the endemic equilibrium in σ-τ plane. Color code denotes the maximum real part of ζ.}" font "Helvetica,15" at graph -0.3, graph -0.1
set label "{/Symbol s}" font "Helvetica,15" at graph -0.3, graph 0.6
set label "{Re{/Symbol z}_{max}}" font "Helvetica,15" at graph 1.3, graph 0.5
set pm3d map #Achte auf das Format der Datendatei (Leerzeilen!)
set cbrange [-0.0075:0.0075]
set xrange [0:350]
set yrange [0:12]
set palette defined (-0.0075 0 0 1, 0 0 1 0, 0 "yellow", 0.0075 1 0 0)
set colorbox
set title "(d)"
unset key
splot "4.dat" u 1:2:4 title""
unset multiplot

我希望在这4幅绘图的下方添加全局图注(整行说明文本),同时保持原有绘图尺寸不变。之前尝试在第4幅图中用set label设置位置,但文本并未出现在输出文件中,请问该如何实现?

解决方法

问题核心在于:multiplot模式下,单幅子图的graph坐标系仅作用于当前子图,超出子图范围的元素会被裁剪;且你之前将图注绑定在第4个子图上,位置设置超出子图可视区域后无法显示。

正确实现步骤如下:

1. 预留图注空间

在开启multiplot前,通过调整底部边距预留图注位置,确保原有子图布局不受影响:

set bmargin at screen 0.15  # 底部预留15%的画布空间给图注

2. 绘制全局图注

所有子图绘制完成后,使用screen坐标系(基于整个画布)定位图注,并执行空plot命令触发渲染:

修改后的完整关键代码片段:

set size 1, 1
set origin 0.0, 0.0
set term postscript eps enhanced color 'Helvetica' 15
set output 'sig_tau2.eps'
# 底部预留图注空间
set bmargin at screen 0.15
set multiplot layout 2,2

# ... 此处保留原有4个子图的绘制代码不变 ...

# 所有子图绘制完成后添加全局图注
unset xtics
unset ytics
unset pm3d
unset colorbox
# 用screen坐标系定位到画布底部居中
set label "Figure 2: Stability region of the endemic equilibrium in σ-τ plane. Color code denotes the maximum real part of ζ." \
    font "Helvetica,15" at screen 0.5, screen 0.05 center
# 空plot命令触发图注绘制
plot NaN notitle
unset multiplot

额外优化建议

  • 提取公共配置:将palette、cbrange等重复设置放在multiplot前统一配置,减少代码冗余。
  • 多行图注:如需换行,可在文本中加入\n,结合center参数实现多行居中。

内容的提问来源于Stack Exchange,提问作者Althaqel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:23:10