微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有非数字轴的 geom_scatterpie

如何解决带有非数字轴的 geom_scatterpie

我想要一个带有饼图而不是点的物种 x 样本(包括字符串/因子)散点图。点的大小应与每个样本中物种的丰度相关。 只需点如下即可轻松完成此操作:

d <- data.frame(Tax=c("A","B","C"),Sample=c("01","02","03"))
d$A <- abs(rnorm(3,sd=1))
d$B <- abs(rnorm(3,sd=2))
d$size=c(0.1,0.2,0.3)
library(ggplot2)
ggplot(d,aes(x=Tax,y=Sample,size=size)) + geom_point()

用散点图包的geom_scatterpie(CRAN上提供)可以实现用饼图替换点

但是,这不适用于 x/y 美学中的因素:

library(scatterpie)
ggplot() + geom_scatterpie(aes(x=Tax,r=size),data=d,cols=c("A","B")) 

Warning:
Removed 6 rows containing non-finite values (stat_pie). 

面板已绘制,但仍为空。请注意,散点图适用于数值 x/y 美学:

d <- data.frame(x=c(1,2,3),y=c(1,3))
d$A <- abs(rnorm(3,0.3)
ggplot() + geom_scatterpie(aes(x=x,y=y,"B")) + coord_fixed()

如何更改 geom_scatterpie 以接受非数字轴?

解决方法

这应该有效:

d2 <- d %>% 
  mutate(tax_num = as.numeric(as.factor(Tax)),sample_num = as.numeric(as.factor(Sample)))

ggplot() + geom_scatterpie(data=d2,aes(x=tax_num,y=sample_num,r=size),cols=c("A","B")) + 
  scale_x_continuous(breaks=c(1,2,3),labels=c("A","B","C")) + 
  scale_y_continuous(breaks=c(1,labels=c("01","02","03")) + 
  labs(x="Tax",y="Sample") + 
  coord_fixed() 

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。