如何解决使用 ggplot 生成饼图,饼图大小成比例
我正在尝试使用 ggplot 创建一系列饼图,其中每个单独图表的总饼图大小与总数字大小成正比。
为了概括这个问题,我创建了这个玩具数据集 - 其中对 4 棵树进行了错误采样,每棵树位于树冠的三个位置 - 上、中和下。
Tree_ID <- as.factor(c("Tree_1","Tree_1","Tree_2","Tree_3","Tree_4","Tree_4"))
Count_loc <- as.factor(c("Upper","Middle","Lower","Upper","Lower"))
Bugs_per_loc <- c(75000,20000,5000,700,250,50,30,20,4,4)
Bugs_per_tree <- c(100000,100000,1000,100,12,12)
Ppt_bugs_loc <- c(.75,.20,.05,.70,.25,.50,.30,.333,.333)
Tree_bug_counts <- data.frame(Tree_ID,Count_loc,Bugs_per_loc,Bugs_per_tree,Ppt_bugs_loc)
使用以下代码,我可以在 ggplot 中生成饼图,每个饼图的大小相同
plot_1 <- ggplot(Tree_bugs,aes(x="",y=Ppt_bugs_loc,fill=Count_loc)) +
geom_bar(stat="identity") +
facet_wrap(Tree_ID,ncol=2) +
coord_polar("y",start=0) +
theme_void()
plot_1
然后当我尝试使用“宽度”参数生成与每棵树采样的错误总数成比例的馅饼时,我得到了有意义的图,但在较小的馅饼中有一个“洞”。
plot_2 <- ggplot(Tree_bugs,fill=Count_loc,width=log10(Bugs_per_tree))) +
geom_bar(stat="identity") +
facet_wrap(Tree_ID,start=0) +
theme_void()
plot_2
我想我可以看到导致问题的原因,因为宽度参数最初产生一个居中的条形,当条形图投影到极坐标时,左边的空白会向前推进。
但是,我一直无法找到解决方法
谢谢
解决方法
这是一种使用 geom_rect 并预先计算每棵树内的堆叠的方法:
Tree_bug_counts %>%
group_by(Tree_ID) %>%
arrange(Tree_ID,Count_loc) %>%
mutate(cuml_pct = cumsum(Ppt_bugs_loc)) %>%
ungroup() %>%
ggplot(aes(xmin=0,xmax = log10(Bugs_per_tree),ymin=cuml_pct - Ppt_bugs_loc,ymax = cuml_pct,fill=Count_loc)) +
geom_rect() +
facet_wrap(Tree_ID,ncol=2) +
coord_polar("y",start=0) +
theme_void()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。