我想用ggplot和faceting构建一系列按因子分组的密度图.另外,我想在每个小平面上的另一个密度图,不受小平面施加的约束.
例如,刻面图将如下所示:
require(ggplot2)
ggplot(diamonds, aes(price)) + facet_grid(.~clarity) + geom_density()
Run Code Online (Sandbox Code Playgroud)
然后我想在每个方面的顶部分层以下单密度图:
ggplot(diamonds, aes(price)) + geom_density()
Run Code Online (Sandbox Code Playgroud)
此外,ggplot是否具有最佳方法,或者有一个首选方法?
Did*_*rts 20
实现这一目标的一种方法是创建diamonds2仅包含列price然后两个geom_density()调用的新数据框- 一个使用原始数据diamonds,另一个使用原始数据diamonds2.由于diamonds2没有列clarity,所有方面都将使用所有值.
diamonds2<-diamonds["price"]
ggplot(diamonds, aes(price)) + geom_density()+facet_grid(.~clarity) +
geom_density(data=diamonds2,aes(price),colour="blue")
Run Code Online (Sandbox Code Playgroud)

更新 - 正如@BrianDiggs所建议的那样,可以实现相同的结果,而无需创建新的数据框架,而是将其转换为内部数据框架geom_density().
ggplot(diamonds, aes(price)) + geom_density()+facet_grid(.~clarity) +
geom_density(data=transform(diamonds, clarity=NULL),aes(price),colour="blue")
Run Code Online (Sandbox Code Playgroud)
另一种方法是在没有刻面的情况下绘制数据.添加两个调用geom_density()- 在一个添加aes(color=clarity)中为每个级别设置不同颜色的密度线,clarity并留空第二个geom_density()- 这将添加整体黑色密度线.
ggplot(diamonds,aes(price))+geom_density(aes(color=clarity))+geom_density()
Run Code Online (Sandbox Code Playgroud)
