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

如何为ggplot箱线图创建分面,按大区展示各子区域数据分布

问题核心原因

你的代码存在两处需要修正的点:

  • 变量名与实际长表列名不匹配:你融合后的长表数值列名为Value、子区域列名为Sub-region(带横杠的列名需要用反引号包裹避免R识别为运算符号),原代码使用的value、sub_region和实际列名不一致,导致映射错误。
  • 分面未设置自由轴:默认facet_wrap会让所有分面共用Y轴刻度,会出现不属于当前大区的子区域也显示在Y轴上的异常。

修改后可运行代码

p <- Name_SR %>% 
  ggplot(aes(x = Value, y = `Sub-region`)) + 
  geom_boxplot() + 
  labs(
       x="Percentage Difference", 
       y = "Sub-Region") + 
  facet_wrap(~Region, scales = "free_y") + # 新增scales参数,每个分面仅显示对应大区的子区域
  theme(panel.grid = element_blank(),
        plot.margin=unit(c(1,6,1,1),"cm"),
        plot.title = element_text(size=12), 
        plot.subtitle = element_text(size=10),
        axis.title = element_text(size = 10),
        axis.text = element_text(size=8))

# 直接打印p即可输出预期图形
p

如果你融合长表时已经将列名重命名为sub_region和value,仅需在facet_wrap行补充scales = "free_y"参数即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:06:09