geom_scatterpie 非数字轴
geom_scatterpie with non-numeric axes
我想要一个物种 x 样本(都是 strings/factors)散点图,其中包含饼图而不是点。点的大小应与每个样本中物种的丰度相关。
只需点数即可轻松完成,如下所示:
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()
要用饼图替换点可以通过 scatterpie 包的 geom_scatterpie 实现(可在 CRAN 上获得)
然而,这不适用于 x/y 美学因素:
library(scatterpie)
ggplot() + geom_scatterpie(aes(x=Tax, y=Sample, 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,2,3))
d$A <- abs(rnorm(3, sd=1))
d$B <- abs(rnorm(3, sd=2))
d$size=c(0.1,0.2, 0.3)
ggplot() + geom_scatterpie(aes(x=x, y=y, r=size), data=d, cols=c("A", "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,2,3), labels=c("01", "02", "03")) +
labs(x="Tax", y="Sample") +
coord_fixed()
我想要一个物种 x 样本(都是 strings/factors)散点图,其中包含饼图而不是点。点的大小应与每个样本中物种的丰度相关。 只需点数即可轻松完成,如下所示:
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()
要用饼图替换点可以通过 scatterpie 包的 geom_scatterpie 实现(可在 CRAN 上获得)
然而,这不适用于 x/y 美学因素:
library(scatterpie)
ggplot() + geom_scatterpie(aes(x=Tax, y=Sample, 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,2,3))
d$A <- abs(rnorm(3, sd=1))
d$B <- abs(rnorm(3, sd=2))
d$size=c(0.1,0.2, 0.3)
ggplot() + geom_scatterpie(aes(x=x, y=y, r=size), data=d, cols=c("A", "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,2,3), labels=c("01", "02", "03")) +
labs(x="Tax", y="Sample") +
coord_fixed()