为什么 facet_grid 将分布放在错误的象限中?
Why is facet_grid placing the distributions in the wrong quadrants?
在 ggplot2 中使用 facet_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
不再符合您的要求。
我并不是说这就是发生的事情 - 只是一个例子,说明为什么从正确的范围调用美学很重要。
在 ggplot2 中使用 facet_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
不再符合您的要求。
我并不是说这就是发生的事情 - 只是一个例子,说明为什么从正确的范围调用美学很重要。