如何为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
相关产品推荐
相关产品推荐

