如何在RStudio中基于指定数据框绘制A、B组出勤总和占比饼图
在RStudio中绘制A/B组出勤总和占比饼图的步骤
没问题,我来一步步帮你实现这个需求,全程用R代码就能搞定:
1. 先创建你的数据框
首先把题目里的两个变量转换成R的数据框:
# 创建原始数据框 df <- data.frame( attendance = c(4,5,6,7,2,5,7,8), treatment = c("A","B","B","A","A","B","B","A") )
2. 分组计算每组的出勤总和
我们需要先算出A组和B组各自的出勤总数,这里提供两种常用方法:
方法一:用Base R的aggregate()函数
# 按treatment分组求和 sum_attendance <- aggregate(attendance ~ treatment, data = df, sum)
方法二:用dplyr包(更直观的管道语法)
如果你的环境里还没装dplyr,先安装:
install.packages("dplyr") library(dplyr)
然后分组求和:
sum_attendance <- df %>% group_by(treatment) %>% summarise(total_attendance = sum(attendance)) %>% ungroup()
两种方法得到的结果都是类似这样的:
treatment total_attendance
A 21
B 23
3. 计算每组的占比百分比
为了让饼图的标签更清晰,我们可以提前算出每组占总和的百分比:
# 计算总和 total_sum <- sum(sum_attendance$total_attendance) # 添加百分比列 sum_attendance$percentage <- round((sum_attendance$total_attendance / total_sum) * 100, 1) # 生成带百分比的标签 sum_attendance$label <- paste0(sum_attendance$treatment, "组: ", sum_attendance$percentage, "%")
4. 绘制饼图
这里也提供两种常用的绘图方式:
方法一:Base R的pie()函数
# 绘制饼图,带百分比标签 pie( sum_attendance$total_attendance, labels = sum_attendance$label, col = c("#619CFF", "#F8766D"), # 自定义颜色 main = "A/B组出勤总和占比" )
方法二:用ggplot2包(更美观的可视化)
如果没装ggplot2先安装:
install.packages("ggplot2") library(ggplot2)
然后绘制饼图:
ggplot(sum_attendance, aes(x = "", y = total_attendance, fill = treatment)) + geom_bar(stat = "identity", width = 1) + coord_polar("y", start = 0) + geom_text(aes(label = label), position = position_stack(vjust = 0.5)) + theme_void() + # 去掉多余的坐标轴和背景 labs(title = "A/B组出勤总和占比", fill = "分组") + scale_fill_manual(values = c("#619CFF", "#F8766D"))
这样就能得到一个清晰展示A组(21,47.7%)和B组(23,52.3%)出勤总和占比的饼图啦~
内容的提问来源于stack exchange,提问作者user3672074
相关产品推荐
相关产品推荐

