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

如何用R的ggplot自动绘制数据框单列因子占比饼图?

使用ggplot自动计算占比绘制饼图

完全可以通过ggplot自动实现,无需单独提前计算占比,核心是利用ggplot的统计函数自动统计类别数量并转换为比例:

基础实现代码

library(ggplot2)

df <- data.frame(a = c("A","A","A","B","B","B","C","C","C"))

# 绘制饼图,自动计算占比
ggplot(df, aes(x = "", fill = a)) +
  geom_bar(position = "fill", width = 1) +
  coord_polar("y") +
  theme_void()

代码说明

  • aes(x = ""):设置空的x轴分组,为饼图提供单组基础结构
  • geom_bar(position = "fill"):默认统计每个类别的出现次数,position = "fill"将次数转换为0-1范围内的占比,width = 1让柱状图宽度适配饼图的圆形结构
  • coord_polar("y"):将垂直方向的柱状图转换为饼图形态
  • theme_void():移除多余的坐标轴、网格线等元素,让饼图更简洁

添加百分比标签

如果需要在饼图上显示具体占比数值,可以借助stat = "count"自动统计次数并计算百分比:

ggplot(df, aes(x = "", fill = a)) +
  geom_bar(position = "fill", width = 1) +
  coord_polar("y") +
  # 自动计算并添加百分比标签
  geom_text(stat = "count",
            aes(label = scales::percent(..count../sum(..count..))),
            position = position_fill(vjust = 0.5)) +
  theme_void()

这里..count..是ggplot统计函数内部变量,代表每个类别的计数,sum(..count..)是总计数,两者相除得到占比后,用scales::percent()转换为百分比格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:18:11