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

如何在带fill变量的ggplot下方添加描述性统计表?

为分组条形图添加对应汇总统计表

需求说明

基于ToothGrowth数据集绘制分组条形图,并在图表下方为每个分组(OJ/VC各剂量组)添加包含**最小值、第一分位数、中位数、第三分位数、最大值、样本量(N)、均值、标准差(sd)、标准误(se)**的汇总统计表,样式参考ggsummarystats的简洁风格。

完整实现代码

# 加载所需包
library(plyr)
library(ggplot2)
library(ggpubr)

# 查看数据集前几行
head(ToothGrowth)

# 将dose转换为因子类型
ToothGrowth$dose <- as.factor(ToothGrowth$dose)

# 计算分组统计量
toothgrowth_summaries <- ddply(ToothGrowth, c("supp", "dose"), summarise,
                          min = min(len),
                          q1 = quantile(len, 0.25),
                          median = median(len),
                          q3 = quantile(len, 0.75),
                          max = max(len),
                          N    = length(len),
                          mean = mean(len),
                          sd = sd(len),
                          se = sd/sqrt(N)
)

# 绘制分组条形图
p <- ggplot(toothgrowth_summaries, 
       aes(x = dose, 
           y = mean, 
           fill = supp)) + 
  geom_bar(stat = "identity", 
           color = "black", 
           position = position_dodge()) + 
  geom_errorbar(aes(ymin = mean-se, 
                    ymax = mean+se), 
                width=.2, position=position_dodge(.9)) +
  labs(title = "牙齿长度随剂量与补充剂的变化",
       x = "剂量(mg)", y = "平均牙齿长度", fill = "补充剂") +
  theme_minimal()

# 整理统计量表列名,适配中文展示
table_data <- toothgrowth_summaries
colnames(table_data) <- c("补充剂", "剂量", "最小值", "第一分位数", "中位数", "第三分位数", "最大值", "样本量(N)", "均值", "标准差(sd)", "标准误(se)")

# 生成仿ggsummarystats风格的可视化表格
table_plot <- ggtable(table_data, rows = NULL) +
  theme(
    table.background = element_rect(fill = "white", color = "black"),
    table.header.background = element_rect(fill = "#f0f0f0"),
    table.header.text = element_text(face = "bold"),
    table.body.text = element_text(size = 10)
  )

# 组合条形图与统计表,调整上下比例
ggarrange(p, table_plot, 
          nrow = 2, heights = c(2, 1),
          align = "v")

关键说明

  1. 统计量计算:通过ddply按supp(补充剂)和dose(剂量)分组,计算所需的所有统计指标;
  2. 条形图绘制:在基础ggplot代码上添加了标题、坐标轴标签和简约主题,提升可读性;
  3. 统计表生成:使用ggpubr::ggtable将统计数据转换为可视化表格,通过主题设置匹配ggsummarystats的简洁风格;
  4. 图形组合:用ggarrange将条形图和统计表垂直排列,调整高度比例让图表更协调。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:52:39