我想创建两个饼图来显示因子变量每个级别的人数。但是,我想获得两个饼图,一个用于两组。
这里有一个例子:
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)
如何将每组(切割)每面(颜色)的项目数表示为百分比?因此,最后我会获得两个完整的饼图,其中包含写在饼图内的前缀。
在绘制图表之前转换数据可能是最容易的。如果我们想找到每个组中值的百分比,我们可以使用以下答案:
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)