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

R语言ggplot2多箱线图:如何修改坐标轴与分面标签?

解决方案

要实现你需要的标签修改,只需要在原有代码基础上做两处调整:

  • 修改Y轴标签:直接添加ylab("BMI")替换默认的变量名
  • 修改分面标签:在facet_grid中用labeller参数自定义每个分面的显示文本,把T1_SB_OSA映射为T1,也可以同步简化其他分面标签保持风格统一

修改后的完整代码:

db1 <- dt %>% 
  dplyr::select("RSQ_STB_BMI","T1_SB_OSA","T2_SB_OSA","T3_SB_OSA","PP_SB_OSA") 

db1 %>% 
  gather(variable, value, -RSQ_STB_BMI) %>%
  ggplot(aes(factor(value), RSQ_STB_BMI, fill = factor(value))) +
  geom_boxplot() + 
  ggtitle('Boxplot of BMI by the Risk of Sleep Apnea')+ 
  scale_fill_manual(values = c('#97e095','#4c9f83','#1c4f60'))+
  theme(plot.title = element_text(hjust = 0.5))+
  # 修改Y轴标签为BMI
  ylab("BMI") +
  # 自定义分面标签,保留原有分面顺序
  facet_grid(~factor(variable, levels=c("T1_SB_OSA","T2_SB_OSA","T3_SB_OSA","PP_SB_OSA")),
             switch = "both",
             labeller = labeller(variable = c(
               T1_SB_OSA = "T1",
               T2_SB_OSA = "T2",
               T3_SB_OSA = "T3",
               PP_SB_OSA = "PP"
             )))+
  theme_bw()+
  theme(panel.spacing = unit(0, "lines"),
        panel.border = element_rect(fill = NA),
        strip.background = element_blank(),
        axis.title.x = element_blank(),
        legend.position = "none",
        strip.placement = "outside")

改动细节说明

  1. Y轴标签:ylab("BMI")是ggplot中修改Y轴标题最直接的方式,会覆盖自动生成的原变量名RSQ_STB_BMI。
  2. 分面标签:labeller函数可以精准控制每个分面的显示文本,这里把长变量名映射成短标签,如果你只需要修改T1_SB_OSA,删掉其他映射项即可。

内容的提问来源于stack exchange,提问作者Just a stat student

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:35:35