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

R使用ggplot绘制多数据集条形图时轴标签、配色及图例设置问题

解决方案

你当前的代码存在逻辑问题:多次调用geom_bar未映射分组字段,无法自动生成图例,且geom_bar默认的计数统计逻辑不适合直接展示预计算的唯一用户数。建议先整理统计结果为统一数据框再绘图,可一次性解决所有需求:

1. 预处理绘图数据

先统计三个数据集的唯一用户数,构造绘图专用数据框:

library(tidyverse)

plot_data <- data.frame(
  data_type = c("睡眠数据", "体重记录数据", "日常活动数据"),
  unique_user = c(
    n_distinct(sleepDay_merged$Id),
    n_distinct(weightLogInfo_merged$Id),
    n_distinct(dailyActivity_merged$Id)
  )
)

注:如果你使用的n_unique函数可用,直接替换上述代码中的n_distinct即可,二者功能一致。

2. 完整绘图代码

ggplot(plot_data, aes(x = data_type, y = unique_user, fill = data_type)) +
  # 用geom_col直接映射y值作为条形高度,无需额外统计
  geom_col() +
  labs(
    title = "不同数据集的用户覆盖差异",
    subtitle = "睡眠数据 / 体重记录数据 / 日常活动数据",
    x = "数据集类型", # 自定义X轴标签
    y = "唯一用户数量", # 自定义Y轴标签,需完全隐藏默认count可写为 y = ""
    fill = "数据集分类" # 自定义图例标题
  ) +
  # 自定义每个条形的颜色,可根据需求替换色值
  scale_fill_manual(values = c("#4E79A7", "#F28E2B", "#59A14F"))

对应需求说明

  • 去除Y轴默认count标签:修改labs中的y参数,设为y = ""即可完全隐藏,也可自定义为你需要的业务说明
  • 重命名X轴标签:修改labs中的x参数为你需要的文字即可
  • 独立颜色+图例:通过aes中的fill映射数据集分组字段,ggplot会自动生成图例,scale_fill_manual支持自定义每个条形的颜色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:09:00