提问者:小点点

ggplot-使用饼图以百分比形式可视化每组中的项目数量-R


我想创建两个饼图来显示因子变量每个级别的人数。但是,我想获得两个饼图,一个用于两组。

这里有一个例子:

library(ggplot2)
library(dplyr)

df <- filter(diamonds, color %in% c("E", "D"))

ggplot(df,aes(x= "", fill=cut)) + 
  geom_bar()+
  facet_wrap(~color)+
  ggtitle(" ") +
  coord_polar("y", start=0)

如何将每组(切割)每面(颜色)的项目数表示为百分比?因此,最后我会获得两个完整的饼图,其中包含写在饼图内的前缀。


共1个答案

匿名用户

在绘制图表之前转换数据可能是最容易的。如果我们想找到每个组中值的百分比,我们可以使用以下答案:

df <- df %>%
  group_by(color, cut) %>%
  summarise(count = n()) %>%
  group_by(color) %>%
  mutate(per=count/sum(count)) %>% 
  ungroup()

df
# A tibble: 10 x 4
   color cut       count    per
   <ord> <ord>     <int>  <dbl>
 1 D     Fair        163 0.0241
 2 D     Good        662 0.0977
 3 D     Very Good  1513 0.223 
 4 D     Premium    1603 0.237 
 5 D     Ideal      2834 0.418 
 6 E     Fair        224 0.0229
 7 E     Good        933 0.0952
 8 E     Very Good  2400 0.245 
 9 E     Premium    2337 0.239 
10 E     Ideal      3903 0.398 

我们可以将gg图的标签更改为百分比,如下所示:

ggplot(df, aes(x= "", y = per, fill=cut)) + 
  geom_col() +
  facet_wrap(~color)+
  ggtitle(" ") +
  coord_polar("y", start=0) +
  scale_y_continuous(labels = scales::percent)