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

gnuplot绘制带误差棒的分组直方图问题求助

解决Gnuplot分组直方图带误差棒的问题

嘿,我刚好碰到过类似的坑,来帮你搞定它!

问题出在哪?

你原脚本里用using 2:3来指定均值和误差,但gnuplot的histogram errorbars风格对列选择的逻辑和普通plot完全不一样——它需要明确知道每个柱子的x位置、均值、误差三个信息,而你只给了后两个,而且列的对应关系也搞错了,这就导致脚本无法正确解析数据。

你的数据结构是每行行号 均值 标准差,共9行,对应3个数据组(每组3个类别:first/second/third),用every 3系列的筛选思路是对的,但列选择部分没跟上直方图的要求。

正确的实现脚本

下面是修改后的可运行脚本,我标了关键改动:

set style histogram cluster gap 1  # 先设置分组直方图的组间间隙
set style histogram errorbars gap 1 lw 2  # 启用误差棒,可指定线宽
set style data histogram
set xtics ("Group 1" 0, "Group 2" 1, "Group 3" 2)  # 对应3个数据组的x标签
set style fill solid border rgb "black"
set yrange [0:3.5]

# 核心改动:用using 0:2:3,0是gnuplot自动生成的行索引(对应x位置),2是均值,3是标准差
plot 'output.dat' every 3 using 0:2:3 t "first", \
     '' every 3::1 using 0:2:3 t "second", \
     '' every 3::2 using 0:2:3 t "third"
pause -1 "Press any key to exit"

关键细节解释

  1. 列选择规则:using 0:2:3里的三个参数分别是:
    • 0:让gnuplot自动为筛选后的每行分配x坐标(0、1、2,刚好对应你设置的xtics标签)
    • 2:指定第二列为柱子的高度(均值)
    • 3:指定第三列为误差棒的范围(标准差)
  2. 分组逻辑:set style histogram cluster会把三个系列(first/second/third)的柱子自动分组到对应的x位置上,形成你想要的分组直方图效果。
  3. 为什么原写法不行:你之前的using 2:3会让gnuplot把第二列当作x坐标、第三列当作误差,但完全没指定柱子高度,这和你的数据结构完全不匹配,自然画不出正确的图。

这样修改后,你就能得到带误差棒的分组直方图了,每个组里的三个柱子分别对应first/second/third类别,误差棒也会正确显示~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:59:27