我想创建两个饼图来显示因子变量的每个级别的人数。但是,我想获得两个饼图,一个用于两组。
这是一个例子:
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)
如何以每个方面(颜色)表示每组(切割)的项目数量百分比?所以最后我会获得两个完整的饼图,其中的百分比写在饼图内。
在绘制图形之前,最简单的方法是转换数据。如果我们想要找到每个组中值的百分比,我们可以使用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)