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

如何在ggplot中为Y轴赋值并绘制AR分组百分比柱状图

解决ggplot柱状图展示百分比数据的问题

问题根源

你的Percentage列是带%符号的字符型数据,ggplot无法将其识别为数值型变量用于Y轴映射,这是导致无法生成柱状图的核心原因。

步骤1:转换数据类型

先把Percentage列的%符号移除,转换为数值型:

# 假设你的数据框名为df
df$Percentage <- as.numeric(sub("%", "", df$Percentage))

步骤2:绘制柱状图

使用geom_col()(而非默认的geom_bar(),因为geom_bar()默认是计数统计,而你已经有汇总好的百分比数值):

library(ggplot2)

ggplot(df, aes(x = AR, y = Percentage)) +
  geom_col(fill = "steelblue") + # 设置柱子填充色
  labs(
    x = "年龄区间",
    y = "百分比(%)",
    title = "各年龄区间占比分布"
  ) +
  theme_bw() +
  # 可选:在柱子顶部添加百分比标签
  geom_text(aes(label = paste0(Percentage, "%")), vjust = -0.3, size = 3.5)

关于ggplot的Y轴赋值

  • 基础赋值:在aes()中通过y = 数值列名指定Y轴对应的变量,比如上面的y = Percentage。
  • 自定义Y轴刻度/范围:用scale_y_continuous()调整,例如设置Y轴范围0-20,间隔2:
+ scale_y_continuous(
    limits = c(0, 20),
    breaks = seq(0, 20, 2),
    labels = function(x) paste0(x, "%") # 可选:给Y轴刻度加上%符号
  )

可选:固定X轴顺序

如果需要让年龄区间按逻辑顺序排列(避免ggplot按字符排序打乱顺序),可以把AR转为因子并指定层级:

df$AR <- factor(
  df$AR,
  levels = c("16-19", "20-24", "25-29", "30-34", "35-39", "40-44", "45-49", "50-54", "55-59", "60+")
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:14:51