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

如何在R语言中针对单列数据绘制饼图

用R语言绘制单列数据饼图的操作方法

单列数据多为分类变量,绘制饼图前需要先统计每个类别的出现频次,再基于频次结果绘图,具体实现分为基础R和ggplot2两种常用方案:

基础R实现(无需额外安装包)

  • 第一步:构造/导入你的单列数据,以下为示例数据
# 示例:单列数据为100个用户的设备类型统计
single_col_data <- data.frame(
  device = sample(c("手机", "电脑", "平板", "智能手表"), size = 100, replace = TRUE, prob = c(0.5, 0.3, 0.12, 0.08))
)
  • 第二步:用table()函数统计单列各分类的出现频次
freq <- table(single_col_data$device)
  • 第三步:调用pie()函数绘制饼图,可自定义标签、颜色、标题
# 基础饼图
pie(x = freq, 
    labels = names(freq),
    main = "用户设备类型占比饼图",
    col = c("#FF9999", "#99CCFF", "#99FF99", "#FFCC99"))

# 带百分比标签的饼图
percent_label <- paste0(names(freq), " ", round(100*freq/sum(freq), 1), "%")
pie(x = freq,
    labels = percent_label,
    col = c("#FF9999", "#99CCFF", "#99FF99", "#FFCC99"))

ggplot2实现(更美观的可视化方案)

  • 第一步:加载包并将统计后的频次转为数据框格式
library(ggplot2)
freq_df <- as.data.frame(table(single_col_data$device))
colnames(freq_df) <- c("category", "count")
  • 第二步:绘制饼图(ggplot2中饼图本质是极坐标转换后的堆叠条形图)
# 基础饼图
ggplot(freq_df, aes(x = "", y = count, fill = category)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  labs(title = "用户设备类型占比饼图", fill = "设备类型") +
  theme_void() # 清除冗余的坐标轴、背景元素

# 带百分比标签的饼图
ggplot(freq_df, aes(x = "", y = count, fill = category)) +
  geom_bar(stat = "identity", width = 1, color = "white") +
  geom_text(aes(label = paste0(round(count/sum(count)*100,1), "%")), 
            position = position_stack(vjust = 0.5)) +
  coord_polar("y", start = 0) +
  labs(title = "用户设备类型占比饼图", fill = "设备类型") +
  theme_void()

补充提示

如果你的单列数据是连续数值类型,需要先使用cut()函数对数值做分箱处理,得到分类区间后再按上述步骤统计频次绘图即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:54:04