我想使用ggplot和faceting构建一系列按因子分组的密度图。另外,我想在每个小平面上的另一个密度图,不受小平面施加的约束。
例如,刻面图将如下所示:
require(ggplot2)
ggplot(diamonds, aes(price)) + facet_grid(.~clarity) + geom_density()
然后我想在每个方面的顶部分层以下单密度图:
ggplot(diamonds, aes(price)) + geom_density()
此外,ggplot是否具有最佳方法,或者是否有首选方法?
答案 0 :(得分: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")
UPDATE - 正如@BrianDiggs所建议的那样,可以在不创建新数据框的情况下实现相同的结果,但可以在geom_density()
内进行转换。
ggplot(diamonds, aes(price)) + geom_density()+facet_grid(.~clarity) +
geom_density(data=transform(diamonds, clarity=NULL),aes(price),colour="blue")
另一种方法是在没有刻面的情况下绘制数据。向geom_density()
添加两个调用 - 在一个添加aes(color=clarity)
中为每个clarity
级别设置不同颜色的密度线,并留空第二个geom_density()
- 这将增加整体黑色密度线。
ggplot(diamonds,aes(price))+geom_density(aes(color=clarity))+geom_density()