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

如何在ggplot分面柱状图标签中同时显示百分比与计数?

解决方案

要在按Cycle分面的柱状图标签中同时显示百分比和样本计数,核心是提前计算每个分组的计数与百分比,再将两者合并为统一的标签文本,最后用geom_text渲染。以下是具体实现步骤:

1. 加载依赖包

先确保加载tidyverse(包含数据处理的dplyr和绘图的ggplot2):

library(tidyverse)

2. 数据预处理(关键步骤)

假设你的原始数据框名为df,包含分面变量Cycle、柱状图分类变量Category(对应x轴)。按Cycle和Category分组统计计数、百分比,并生成组合标签:

df_summary <- df %>%
  group_by(Cycle, Category) %>%
  summarise(n = n(), .groups = "drop") %>%  # 统计每个分组的样本数
  group_by(Cycle) %>%  # 按分面维度计算百分比
  mutate(pct = scales::percent(n / sum(n), accuracy = 1)) %>%  # 保留整数百分比,可调整accuracy参数
  mutate(label = paste0(pct, "\n(n=", n, ")"))  # 合并百分比与计数,换行显示更清晰

3. 绘制分面柱状图

用处理后的汇总数据绘图,geom_col绘制柱状图,geom_text添加组合标签:

ggplot(df_summary, aes(x = Category, y = n, fill = Category)) +
  geom_col() +
  geom_text(aes(label = label), 
            position = position_stack(vjust = 0.5),  # 堆叠柱状图时居中显示标签
            # 若为分组柱状图,改用position = position_dodge(width = 0.9), vjust = -0.5
            size = 3) +
  facet_wrap(~Cycle) +  # 按Cycle分面
  labs(x = "分类", y = "样本数", title = "按Cycle分面的柱状图(含百分比与计数)") +
  theme_bw()

注意事项

  • 如果你的柱状图是按百分比而非绝对数绘制,只需将geom_col的y映射改为pct,但更建议用绝对数绘图、百分比放在标签,数据展示更直观
  • 可调整label格式,比如去掉换行写成paste0(pct, " (n=", n, ")"),或修改scales::percent的accuracy参数调整百分比小数位数
  • 标签位置可通过vjust、hjust或position参数微调,避免重叠

模拟数据测试

若需验证效果,可先用以下模拟数据测试:

set.seed(123)
# 生成模拟数据
df <- tibble(
  Cycle = rep(c("Cycle1", "Cycle2", "Cycle3"), each = 200),
  Category = sample(c("A", "B", "C", "D"), 600, replace = TRUE, prob = c(0.3, 0.25, 0.2, 0.25))
)

# 按上述步骤处理并绘图
df_summary <- df %>%
  group_by(Cycle, Category) %>%
  summarise(n = n(), .groups = "drop") %>%
  group_by(Cycle) %>%
  mutate(pct = scales::percent(n / sum(n), accuracy = 1)) %>%
  mutate(label = paste0(pct, "\n(n=", n, ")"))

ggplot(df_summary, aes(x = Category, y = n, fill = Category)) +
  geom_col() +
  geom_text(aes(label = label), position = position_stack(vjust = 0.5), size = 3) +
  facet_wrap(~Cycle) +
  theme_bw()

内容的提问来源于stack exchange,提问作者Chloé

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:24:29