如果我在同一个图上有两个数据集,那么我可以在该图上有两个独立的面,每个面对应一个不同的数据集吗?
例如,在散点图中,可以在x方向上分割一个数据,可以在y方向上分割另一个数据。
例如,考虑以下代码,我试图将d1
分割为X轴小于0.5且大于0.5的值,
类似地,d2
和y轴。这样运行,但我不明白为什么我得到了结果。
ggplot2
可能不是为此而设计的。我没有考虑申请,我只是想了解一下
分面限制和使用示例比尝试理解代码更容易。
library("ggplot2")
splitvec <- function(v)
{
if(v<0.5)
return("L")
else if(v>=0.5)
return("R")
}
set.seed(1)
x1 <- runif(5, 0, 1)
y1 <- runif(5, 0, 1)
xsplit <- sapply(x1, splitvec)
d1 = data.frame(x=x1, y=y1, X=xsplit)
x2 <- runif(5, 0, 1)
y2 <- runif(5, 0, 1)
ysplit <- sapply(y2, splitvec)
d2 = data.frame(x=x2, y=y2, Y=ysplit)
r = ggplot() +
geom_point(data=d1, aes(x=x, y=y)) + facet_grid( ~ X) +
geom_point(data=d2, aes(x=x, y=y)) + facet_grid(Y ~ .)
答案 0 :(得分:4)
在这种情况下,您可以执行以下操作:
facet_grid(Y~X)
由于按顺序应用网格刻面。请注意,在这种情况下,您无法使用facet_wrap
。
在这里,我将重写您的代码,以便为每个拆分变量(X,Y)使用不同的因子。
d1$X <- ifelse(d1$x<0.5,'d1.L','d1.R')
d2$Y <- ifelse(d2$x<0.5,'d2.L','d2.R')
最好为每个数据使用不同的颜色来理解数据会发生什么。
r = ggplot() +
geom_point(data=d1, aes(x=x, y=y),col='blue',size=10) +
geom_point(data=d2, aes(x=x, y=y))+
facet_grid(Y~X,scales="free")+
theme(strip.text = element_text(size=20))