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

Gnuplot直方图未汇总区间内全部值问题求助

Gnuplot直方图盒子叠加问题修复

问题现象

  • 直方图未汇总同一区间(bin)内的所有数据,导致对应区间的盒子位置正确但彼此叠加
  • 开启透明填充样式后,叠加现象会清晰显现

复现代码(中文注释版)

reset

set key autotitle columnhead

#=======================================================================================
# 从其他通过"load"引入的脚本提取的宏定义
fs_reference_age_min    = 20  # 参考年龄最小值
fs_reference_age_max    = 100 # 参考年龄最大值

# 判断数值是否在[a,b)区间内
gp_is_in_range(c,a,b)   = ( c > a && c <= b ) ? 1.0 : NaN
# 判断年龄是否在参考范围内
fs_is_in_age_range(c)   = gp_is_in_range( c, fs_reference_age_min, fs_reference_age_max )
#=======================================================================================

fs_age          = 'PatientAge'  # 数据中的年龄列名
bin(x)          = floor(x/bin_width)*bin_width  # 计算数据所属区间的起始值

x_min           = 0       # X轴最小值
x_max           = 100     # X轴最大值
n_bins          = 20      # 区间总数
bin_width       = real(x_max - x_min)/n_bins  # 单个区间宽度
group_boxwidth  = 1       # 组盒子基准宽度

set boxwidth group_boxwidth*0.75  # 设置盒子显示宽度
set style fill transparent solid 0.3  # 开启透明填充

n = 4
offset = n    

# 测试数据集
$Data <<EOD
Subgroup    PatientAge
4   40.55
4   48.96
1   34.94
5   51.45
1   54.8
2   10.51
4   42.87
3   71.41
4   62.2
2   54.22
3   65.04
1   49.73
4   31.46
3   75.25
1   56.97
2   14.56
2   10.64
3   60.54
EOD

# 原绘制命令(存在叠加问题)
# plot $Data u ( bin( column(fs_age) ) + ( offset - 0.5 ) * group_boxwidth ):( @valid_age ) smooth freq w boxes lc n ti 'NORM_DB' noenhanced

# 修复后的绘制命令
plot $Data u ( fs_is_in_age_range(column(fs_age)) ? (bin(column(fs_age)) + (offset - 0.5)*group_boxwidth) : NaN ):(1) smooth freq w boxes lc n ti 'NORM_DB' noenhanced

问题原因与修复思路

  • 原命令将年龄有效性判断放在Y列,@valid_age返回1或NaN,导致smooth freq无法正确汇总同一区间内的有效数据,每个有效数据点单独生成一个高度为1的盒子,最终叠加
  • 修复方式:将年龄有效性判断移至X列,不符合条件的点设为NaN(不参与绘制),Y列固定为1,确保smooth freq统计同一区间内的有效数据数量,生成单个高度对应计数的盒子

效果说明

修复后,同一区间内的所有有效数据会被汇总,每个区间仅显示一个盒子,高度等于该区间内的有效数据量,不会再出现叠加现象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:43:16