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

如何使用gnuplot重绘Excel分组直方图并在柱顶显示数值

gnuplot 分组直方图绘制修正方案

分组错误原因

你当前脚本未跳过前两行表头,默认将表头行识别为数据行,同时未配置直方图分组间距,导致不同Area的柱子没有明确分组边界。

完整可运行脚本

直接使用你已有的date_mins.tsv文件不需要修改,运行以下脚本即可得到和Excel一致的分组效果,同时自动在柱顶添加数值标签:

clear
reset
# 适配Windows系统字体,避免显示异常
set font 'Microsoft YaHei,10'
set key top left
# 配置直方图分组样式:集群模式,组间间距1.5,组内间距0.2
set style histogram clustered gap 1.5
set style data histogram
set style fill solid 0.8 border lc black
# 轴标签配置
set xlabel '参数项'
set ylabel '数值'
# 预留Y轴顶部空间放数值标签
set yrange [0:110]

# 绘图命令
plot \
# 绘制4组柱子,every ::2 跳过前2行表头,xticlabels取第一列作为X轴刻度
'date_mins.tsv' every ::2 using 2:xticlabels(1) title 'Area1-Case1' lc rgb '#4472c4', \
'' every ::2 using 3 title 'Area1-Case2' lc rgb '#5b9bd5', \
'' every ::2 using 4 title 'Area2-Case1' lc rgb '#ed7d31', \
'' every ::2 using 5 title 'Area2-Case2' lc rgb '#ffc000', \
# 叠加柱顶数值标签,offset控制标签在柱子上方的偏移量
'' every ::2 using 0:2:(sprintf("%d", $2)) with labels offset 0,0.7 notitle, \
'' every ::2 using 1:3:(sprintf("%d", $3)) with labels offset 0,0.7 notitle, \
'' every ::2 using 2:4:(sprintf("%d", $4)) with labels offset 0,0.7 notitle, \
'' every ::2 using 3:5:(sprintf("%d", $5)) with labels offset 0,0.7 notitle

自定义调整说明

  • 若需要调整分组间距,修改set style histogram clustered gap 1.5中的gap值即可,数值越小组间距越小
  • 若需要修改柱子颜色,调整lc rgb后的色值即可,可直接使用Excel对应柱子的十六进制色值
  • 若需要添加第二层X轴分组标注(对应Area维度),可在脚本中添加如下配置:
set x2tics axis in scale 0 nomirror ("Area1" 1.5, "Area2" 3.5)
set x2label '区域'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:36:02