You need to enable JavaScript to run this app. Stata箱线图如何在对应分组顶部添加样本量标注
优惠活动
大模型
产品
解决方案
定价
更多

Stata箱线图如何在对应分组顶部添加样本量标注

Stata双分层箱线图标注组样本量的实现方案

Stata的graph box本身不支持自动在分组顶部展示样本量,原代码中写入的bar(samplesize)是条形图(graph bar)的专属选项,放在箱线图代码中会被Stata直接忽略。通过「预计算分组统计值+叠加精准位置文本标注」的方式,可完全匹配双over分组的坐标位置,实现对应分组顶部标注样本量的需求,具体可运行操作如下:

  • 第一步:预计算每组的标注坐标与文本
    先按照绘图的分组维度,计算每个交叉组的样本量、组内因变量最大值,自动匹配绘图时的x轴位置,全程不需要手动数分组位置:
preserve
* 按两个over分组维度,计算各组样本量、组内因变量最大值
collapse (count) n_obs = igg1ugml_log10 ///
        (max) y_group_max = igg1ugml_log10, ///
        by(female_sex age_groups)
* 排序规则必须和绘图代码中over的顺序完全一致,避免标注错位
sort female_sex age_groups
* 自动生成每个组对应的x轴坐标(Stata双over分组的x轴从左到右依次排序)
gen x_pos = _n
* 计算标注的y轴位置:在组内最大值上方留固定偏移,不遮挡箱线元素
gen y_label = y_group_max + 0.15
* 生成标注文本,可按需调整格式
gen label_content = "n = " + string(n_obs, "%9.0f")
* 保存标注数据为临时文件,供绘图调用
save "group_label_temp.dta", replace
restore
  • 第二步:修改绘图代码叠加标注
    移除原代码中无效的bar(samplesize)选项,适当拉高y轴范围给顶部标注留足空间,通过addplot功能叠加预先算好的标注:
graph box igg1ugml_log10, over(female_sex) over(age_groups) ///
    graphregion(color(white)) /// 
    title(Anti-EPEC IgG1 (ug/ml) in boys and girls) asyvars ///
    ylabel(2.69897 "500" 3 "1,000" 3.3 "2000" 3.69 "5000" 3.95 "9000") ///
    yscale(range(2.5 4.2))  // 扩大y轴上限,防止顶部标注被截断
    /// 叠加样本量标注
    addplot using "group_label_temp.dta", ///
        text(y_label x_pos label_content, size(small) place(n)) ///
        legend(off)
  • 实操调整提示
    • 命令安装:如果运行addplot提示命令不存在,可输入ssc install addplot, replace完成安装
    • 位置对齐:计算x_pos时的排序顺序,必须和over()选项的排列顺序一致,否则标注会错位到相邻分组上方
    • 偏移调整:y轴偏移量(代码中的0.15)可根据实际数据范围修改,保证文字不遮挡箱线、上须或离群值
    • 版本兼容:该方法适配所有Stata主流版本,不需要依赖高版本的专属功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 12:06:04