为什么facet_grid将分布放置在错误的象限中?
在ggplot2中使用为什么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
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
,这就解决了它。我不会抓住那个细节的,谢谢。