ggplot - 使用饼图以百分比形式显示每个组中的项目数 - R

问题描述 投票:0回答:1

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

这是一个例子:

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)

enter image description here

如何以每个方面(颜色)表示每组(切割)的项目数量百分比?所以最后我会获得两个完整的饼图,其中的百分比写在饼图内。

r ggplot2 pie-chart percentage facet
1个回答
1
投票

在绘制图形之前,最简单的方法是转换数据。如果我们想要找到每个组中值的百分比,我们可以使用this answer

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 

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

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)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.