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

如何用ggplot2将会员与非会员平均骑行时长变量绘制成条形图?

用ggplot2绘制会员与非会员平均骑行时长条形图的正确方法

你已经通过R代码计算出会员(member)和非会员(casual)的平均骑行时长,得到meanride_member和meanride_casual两个单值变量,但当前绘制的条形图不符合预期(两个条形重叠),问题出在数据框构造——你没有明确区分用户类型,且用固定值作为x轴导致无法分类展示。

核心修正:构建分类数据框

ggplot2需要分类变量区分不同条形,需重新构造包含「用户类型」和「平均骑行时长」的标准数据框:

修正后的代码(替换原代码最后两行)

# 构建符合ggplot要求的数据框
mean_data <- data.frame(
  user_type = c("非会员", "会员"),
  mean_length = c(meanride_casual, meanride_member)
)

# 绘制条形图
ggplot(data = mean_data, aes(x = user_type, y = mean_length)) +
  geom_bar(stat = "identity", fill = c("#2196F3", "#4CAF50"), width = 0.6) +
  labs(
    title = "会员与非会员平均骑行时长对比",
    x = "用户类型",
    y = "平均骑行时长(秒)"
  ) +
  theme_minimal() +
  geom_text(aes(label = round(mean_length, 1)), vjust = -0.5, size = 4) # 添加数值标签

代码说明

  • user_type列明确区分两类用户,作为x轴分类依据;
  • mean_length对应各自的平均骑行时长,作为y轴数值;
  • stat="identity"表示直接使用数据框中的数值绘制条形;
  • 新增标题、坐标轴标签和数值标签,让图表信息更清晰。

更简洁的写法:用dplyr一步完成计算+绘图

无需手动拆分数据计算均值,直接用dplyr分组汇总后绘图,减少冗余代码:

Data %>%
  group_by(type) %>%
  summarise(mean_length = mean(length, na.rm = TRUE)) %>%
  ggplot(aes(x = type, y = mean_length)) +
  geom_bar(stat = "identity", fill = c("#2196F3", "#4CAF50")) +
  labs(title = "会员与非会员平均骑行时长对比", x = "用户类型", y = "平均骑行时长(秒)") +
  theme_minimal() +
  geom_text(aes(label = round(mean_length, 1)), vjust = -0.3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:12:49