【R语言】ggplot pie plot +facet_wrap + txt

tab = table(dat$`Age Cohort`, dat$Ethnicity)
plot_age = data.table(tab)
# plot_age$Age_group = rownames(plot_age)
colnames(plot_age)[1:2] = c('Age_group','Ethnicity')

N_group = c()
for (i in unique(plot_age$Ethnicity)){N_group = c(N_group, sum(plot_age$N[plot_age$Ethnicity == i]))}
names(N_group) = unique(plot_age$Ethnicity)

plot_age[,midpoint:=ifelse(N>0, (cumsum(N) - N/2)/N_group[which(names(N_group) == Ethnicity)],NA), by= Ethnicity]
plot_age$midpoint = 1-plot_age$midpoint
# plot_age$N = plot_age$N/N_group[which(unique(plot_age$Ethnicity) == plot_age$Ethnicity)]
for (i in 1:dim(plot_age)[1]){
  plot_age$N[i] =plot_age$N[i]/N_group[which(names(N_group)== plot_age$Ethnicity[i])]
  print(paste('i', i,'plot_age$N[i]',plot_age$N[i], 'N_group[which(names(N_group)== plot_age$Ethnicity[i])]',N_group[which(names(N_group)== plot_age$Ethnicity[i])]))
  print(paste('plot_age$N[i]',plot_age$N[i]))
}
plot_age$Age_group = factor(plot_age$Age_group, levels = c('0 - 5', '6-12', '13-17', '18-21', '22-50', '51 +'))

p_age <- ggplot(data = plot_age, aes(x="",y=N, fill = Age_group))+
  geom_bar(stat="identity", width=1, position = position_fill()) +
  coord_polar("y")+
  theme_void() +
  geom_text(aes(x="",y = midpoint, label =Age_group), color='white')+
  facet_wrap(~Ethnicity)+ 
  theme(legend.position="none",
        text=element_text(size=18),
        # axis.text.x=element_text(colour="black", size=12),
        axis.text.y=element_text(colour="black", size=12))
p_age+  scale_fill_uchicago()
ggsave(paste0("age_distribution.pdf"), width = 10, height = 10)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值