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

如何计算月度标签组合占比并在ggplot2分面图中呈现

解决R语言分面图中计算月度唯一标签占比的方法

步骤1:加载依赖包并转换因子类型

先确保安装并加载数据处理和绘图所需的包,再将Tag1和Tag2转为因子类型,适配分面需求:

# 未安装包时先执行:install.packages(c("dplyr", "ggplot2"))
library(dplyr)
library(ggplot2)

# 批量转换Tag1、Tag2为因子
df <- df %>%
  mutate(across(c(Tag1, Tag2), as.factor))

步骤2:计算月度唯一标签占比

按月度(Resolved)、Tag1、Tag2分组,统计每组内唯一Combi tag的数量,再除以该组当月总标签数得到百分比:

summary_df <- df %>%
  group_by(Resolved, Tag1, Tag2) %>%
  summarise(
    # 统计唯一Combi tag的数量
    unique_combi = n_distinct(`Combi tag`),
    # 统计当月该分组下的总标签数
    total_tags = n(),
    # 计算占比并转为百分比格式
    pct_unique = (unique_combi / total_tags) * 100,
    .groups = "drop" # 取消分组状态,方便后续绘图
  )

步骤3:绘制分面占比图

用ggplot2生成分面图,x轴为月度,y轴为占比,分面行/列对应Tag1/Tag2,同时添加百分比标签提升可读性:

ggplot(summary_df, aes(x = Resolved, y = pct_unique)) +
  # 用柱状图展示占比,如需趋势可替换为geom_line()
  geom_col(fill = "#2980b9", alpha = 0.8) +
  # 在柱子上方显示百分比(保留1位小数)
  geom_text(aes(label = sprintf("%.1f%%", pct_unique)), vjust = -0.3, size = 3) +
  # 设置分面布局:行是Tag1,列是Tag2
  facet_grid(Tag1 ~ Tag2) +
  # 设置坐标轴和标题
  labs(
    x = "月度",
    y = "唯一Combi Tag占比(%)",
    title = "各Tag组合下月度唯一标签占比"
  ) +
  # 优化主题,旋转x轴标签避免重叠
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

关键细节说明

  • n_distinct():专门用于统计向量中的唯一值数量,精准计算唯一Combi tag的个数
  • group_by(Resolved, Tag1, Tag2):确保每个分面单元格对应独立的分组数据,计算的占比是该分面下当月的专属占比
  • sprintf():格式化百分比显示,避免小数位数过多影响图表整洁度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:43:28