如何调整R语言ggpubr绘制图表的X轴整体宽度?
问题原因
X轴显示过宽的核心原因是代码中scale_x_discrete(expand = c(2, 2))的参数设置不合理:
expand参数的两个取值分别对应乘法扩展因子和加法扩展因子,你设置的数值过大,会在X轴分类的两侧添加大量空白区域,最终呈现为X轴整体过宽。
另外原代码中统计检验部分的管道符%>%漏写了末尾的%,直接运行会报错,后续修改后的代码已经修正该问题。
调整方案
可根据你的实际需求选择对应的调整方式:
- 方案1:缩小
expand参数取值。如果仅需要减少X轴两侧的空白,直接调整scale_x_discrete的expand即可,常用的默认取值为c(0.05, 0),你也可以根据显示效果自行调整数值大小:
# 替换原代码中的scale_x_discrete行即可 scale_x_discrete(expand = c(0.1, 0.1))
- 方案2:调整箱线图自身宽度。如果是觉得分类之间的空白太多、箱线图太窄显得X轴过宽,可以增大
ggboxplot的width参数,你当前设置为0.5,可调整为0.7-0.8区间:
bxp <- ggboxplot(df, x = "supp", y = "len", fill = "supp", palette = c("#00AFBB", "#E7B800"),width = 0.8)
- 方案3:保存图片时指定宽高比。如果是需要调整整个绘图输出的X轴比例,不需要修改图层参数,直接在调用
ggsave保存图片时设置更小的宽度即可:
# 示例:设置输出图片宽度为3英寸、高度为4英寸,dpi为300 ggsave("箱线图结果.png", width = 3, height = 4, dpi = 300)
修正后完整可运行代码
library(ggpubr) library(rstatix) library(dplyr) df <- ToothGrowth df$dose <- as.factor(df$dose) head(df, 6) # 统计检验 stat.test <- df %>% t_test(len ~ supp) %>% add_significance() stat.test bxp <- ggboxplot(df, x = "supp", y = "len", fill = "supp", palette = c("#00AFBB", "#E7B800"),width = 0.7) stat.test <- stat.test %>% add_xy_position(x = "supp") bxp + stat_pvalue_manual( stat.test, label = "T-test, p = {p}", vjust = -1, bracket.nudge.y = 1 ) + scale_y_continuous(expand = expansion(mult = c(0.05, 0.15)))+ scale_x_discrete(expand = c(0.1, 0.1))
内容的提问来源于stack exchange,提问作者Deniz
相关产品推荐
相关产品推荐

