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

如何在R中绘制展示多列数值平均值的多柱状图?

解决方法

要画出四个活动强度的均值对比柱状图,核心是把你的宽格式数据转成长格式——因为ggplot更适合处理长格式数据来做多类别对比,不需要额外添加新变量,调整数据结构就行。

步骤1:加载工具包并转换数据格式

先加载tidyverse(包含ggplot2和数据转换工具tidyr),然后把四列活动数据转成“活动类型-时长”的长格式:

library(tidyverse)

# 将宽格式数据转成长格式
activity_long <- Activity_Zero %>%
  # 只保留需要对比的四列
  select(veryactive, fairlyactive, lightlyactive, sedentary) %>%
  pivot_longer(
    cols = everything(),  # 选中所有列
    names_to = "activity_level",  # 新列:活动强度类型
    values_to = "minutes"  # 新列:对应的时长数值
  )

步骤2:绘制均值对比柱状图

有两种方式可以实现,选一种就行:

方式一:直接在ggplot中计算并绘制均值

ggplot(activity_long, aes(x = activity_level, y = minutes)) +
  stat_summary(geom = "bar", fun = "mean", fill = "#619CFF") +
  # 添加标签美化
  labs(
    title = "不同活动强度的平均时长对比",
    x = "活动强度",
    y = "平均时长(分钟)"
  ) +
  theme_minimal()

方式二:先计算均值再绘图(更直观)

先单独算出每个活动类型的均值,再用柱状图展示:

# 计算各活动类型的均值
activity_means <- activity_long %>%
  group_by(activity_level) %>%
  summarize(mean_minutes = mean(minutes, na.rm = TRUE))

# 绘图
ggplot(activity_means, aes(x = activity_level, y = mean_minutes)) +
  geom_bar(stat = "identity", fill = "#619CFF") +
  labs(
    title = "不同活动强度的平均时长对比",
    x = "活动强度",
    y = "平均时长(分钟)"
  ) +
  theme_minimal()

说明

你之前的代码是把calories作为x轴,现在要对比四个列的均值,只需要把活动类型(veryactive等)作为x轴变量,y轴对应各类型的均值即可,不需要额外设置新变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:25:38