为什么facet_grid将分布放置在错误的象限中?

为什么facet_grid将分布放置在错误的象限中?,r,ggplot2,histogram,R,Ggplot2,Histogram,在ggplot2中使用facet\u grid(x~y)时,我在各种示例中看到并在文档中阅读了x变量是垂直排列的,y变量是水平排列的。但是,当我运行以下命令时: set.seed(1) b = c(rnorm(10000,mean=0,sd=0.5),rnorm(10000,mean=5,sd=0.5), rnorm(10000,mean=7,sd=0.5),rnorm(10000,mean=10,sd=0.5)) x = c(rep('xL', 20000), rep('xR',2

在ggplot2中使用
facet\u grid(x~y)
时,我在各种示例中看到并在文档中阅读了
x
变量是垂直排列的,
y
变量是水平排列的。但是,当我运行以下命令时:

set.seed(1)
b = c(rnorm(10000,mean=0,sd=0.5),rnorm(10000,mean=5,sd=0.5),
      rnorm(10000,mean=7,sd=0.5),rnorm(10000,mean=10,sd=0.5))
x = c(rep('xL', 20000), rep('xR',20000))
y = c(rep('yL',10000), rep('yR',20000), rep('yL',10000))
foo = data.frame(x=x,y=y,b=b)

ggplot(data=foo, aes(foo$b)) + 
  geom_histogram(aes(y=..density..),breaks=seq(-5,12,by=.2),col='steelblue',fill='steelblue2') + 
  geom_density(col='black') + 
  facet_grid(x ~ y, scales='free_y')
我得到以下信息(质量很抱歉)。尽管如此,从上面看,平均值为10的分布是(x,y)为'xR,xL'的分布,该分布出现在右下象限,标签为'xR,yR'。我做错了什么

aes(foo$b)
更改为
aes(x=b)
,以确保美学效果正确映射

您要确保
ggplot
从正确的范围(即从已传递的数据)中找到标记为
b
的列。例如,可能是在传递数据时,
ggplot
重新排列了数据,因此映射变量
foo$b
不再符合您的要求


我并不是说发生了这样的事情——只是一个例子,说明了为什么从正确的范围调用美学是重要的。

aes
中的
foo$b
更改为
b
,这就解决了它。我不会抓住那个细节的,谢谢。