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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:09:12