如何在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
相关产品推荐
相关产品推荐

