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

调整Gnuplot中Y轴标签左侧空白问题求助

解决Gnuplot箱体图Y轴标签左侧留白过多的问题

我需要生成的是时序箱体图,箱体代表Y轴标签对应事物的持续时长,目前已实现Y轴标签与箱体标签的展示,但当Y轴标签长度差异较大时,自动布局会导致左侧留白过多。试过调整图片尺寸,希望找到针对性优化Y轴标签留白的方法。

优化方案

Gnuplot提供几种直接控制Y轴标签边距的方法,无需整体调整图片尺寸:

1. 手动设置左边界

通过set lmargin命令直接指定左侧边距的宽度(单位为字符数),替代自动计算的边距:

set lmargin 15  # 根据最长标签的实际长度调整数值

2. 调整Y轴标签偏移

如果不想压缩图表区域,可以将Y轴标签向左偏移,减少无效留白:

set ytics nomirror left offset -2,0  # 第一个数值为水平偏移量,负数表示向左移动

3. 动态计算边距(进阶)

先读取数据中最长Y轴标签的长度,自动计算所需边距,适合标签长度不确定的场景:

# 获取最长Y轴标签的字符数
max_len = 0
stats "test1.csv" using (strlen(stringcolumn(1))) nooutput
max_len = STATS_max

# 根据最长标签长度设置左边界,预留少量余量
set lmargin max_len + 2

修改后的示例脚本

set terminal png size 1024,480 background "white"
set output 'timing.png'
set timefmt "%m/%d/%Y"
set xdata time
set title "Timeline of Boxes"
set yrange [] 
set xrange ["1/01/2019":"10/31/2024"]
set format x "%m/%y"

set ytics nomirror
# 手动设置左边界,根据实际标签长度调整
set lmargin 20
set grid x y
unset key
set border 3

T(N) = timecolumn(N,timefmt)
set datafile separator comma

plot "test1.csv" using (T(3)) : ($5) : (T(3)) : (T(4)) : ($5-0.5) : ($5+0.5) : ($5) : ytic(1) with boxxyerror, \
     "test1.csv" using ((T(3)+T(4))/2):($5) : ($2) with labels center

测试数据(test1.csv)

#first,second,start,end,sequence
fourth y label,fourth box label,12/16/2021,10/30/2024,4
third y label,third box label,6/1/2020,12/15/2021,3
this y label is quite long actually,second box label,1/1/2020,6/1/2020,2
first y label,first box label,6/1/2019,12/30/2019,1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:15:13