3

同じプロットに 2 つのデータセットがある場合、それぞれが異なるデータ セットに対応する 2 つの独立したファセットをそのプロットに持つことはできますか?

たとえば、散布図では、1 つのデータ セットを x 方向に分割し、もう 1 つのデータ セットを 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 ~ .)
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 に答える