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

如何调整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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:24:03