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)
【R语言】ggplot pie plot +facet_wrap + txt
最新推荐文章于 2023-12-22 15:41:17 发布