Gnuplot中为断轴直方图设置统一Y轴刻度间隔
解决gnuplot断轴直方图Y轴刻度间隔统一问题
要让上下两个子图的Y轴刻度间隔保持一致(均为1),核心是手动指定Y轴刻度,而非依赖gnuplot的自动计算。以下是具体修改方案:
问题原因
gnuplot会根据轴的范围自动选择刻度间隔:上方子图Y轴范围是0到-8(跨度8),自动选了间隔1;下方子图Y轴范围是-16到-20(跨度4),默认选了更小的0.5间隔。要强制统一间隔,需手动定义刻度规则。
修改步骤
- 手动指定Y轴刻度:在绘制每个子图前,用
set ytics <起始值>,<间隔>,<结束值>明确刻度序列。 - 优化子图高度比例:由于上下轴范围跨度为8:4(2:1),调整子图高度比例,让刻度的垂直视觉间距一致,提升图表美观度。
修改后的完整代码
set encoding iso_8859_1 set terminal postscript eps enhanced size 5.7, 4.3 color solid linewidth 2 font 'Times-Roman, 22' set output 'test4.eps' red = "#FF0000"; green = "#00FF00"; blue = "#0000FF"; skyblue = "#87CEEB"; reset unset key bm = 0.05 lm = 0.12 rm = 0.95 gap = 0.03 size = 0.68 # 调整子图高度比例:上方跨度8,下方跨度4,比例设为2:1 kk = 1/3 # 下方子图占总高度的1/3,上方占2/3 y1 = 0.0; y2 = -8.0; y3 = -16; y4 = -20 ytick_step = -1 # 统一刻度间隔为-1 set style histogram cluster gap 1 set style data histogram set style fill solid 1.0 border -1 set multiplot # 上方子图设置 set border 2+4+8 unset xtics set x2tics nomirror rotate set ytics nomirror set xlabel 'Metals' font 'Times-Roman, 22' offset 0, 16.5; set ylabel 'd-band' font 'Times-Roman, 22' offset -1.5, -6; set lmargin at screen lm set rmargin at screen rm set bmargin at screen bm + size * kk + gap set tmargin at screen bm + size + gap set yrange [y2:y1] set ytics y2, ytick_step, y1 # 手动指定上方刻度:-8,-7,...0 plot "d-band.dat" using 2:x2tic(1) title "Neutral" linecolor rgb '#616161', \ "d-band.dat" using 3 title "Positive" linecolor rgb '#EF6C00', \ "d-band.dat" using 4 title "Negative" linecolor rgb '#039BE5' # 下方子图设置 unset x2tics unset xtics unset xlabel unset ylabel set key at 11, -18.3 set border 2+1+8 set bmargin at screen bm set tmargin at screen bm + size * kk set yrange [y4:y3] set ytics y4, ytick_step, y3 # 手动指定下方刻度:-20,-19,...-16 plot "d-band.dat" using 2:x2tic(1) title "Neutral" linecolor rgb '#616161', \ "d-band.dat" using 3 title "Positive" linecolor rgb '#EF6C00', \ "d-band.dat" using 4 title "Negative" linecolor rgb '#039BE5' unset multiplot
关键修改点
- 新增
ytick_step = -1统一刻度间隔,用set ytics分别为上下子图指定完整刻度序列 - 调整
kk = 1/3,让上下子图高度比例匹配轴范围跨度(2:1),保证刻度的垂直视觉间距一致 - 移除冗余注释与未生效设置,简化代码逻辑
内容的提问来源于stack exchange,提问作者Ezio
相关产品推荐
相关产品推荐

