3

如果我在同一个图上有两个数据集,我可以在那个图上有两个独立的方面,每个方面对应一个不同的数据集吗?

例如,在散点图中,可以在 x 方向上拆分一个数据,可以在 y 方向上拆分另一个数据集。

例如,考虑下面的代码,我尝试将d1X 轴的值拆分为小于 0.5 和大于 0.5,并且类似地拆分为d2y 轴。这运行,但我不明白为什么我得到我做的结果。

有可能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 ~ .)
4

1 回答 1

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))

在此处输入图像描述

于 2013-06-01T11:39:50.650 回答