17

我想使用 ggplot 和 faceting 来构建一系列按因子分组的密度图。此外,我想在每个不受刻面施加的约束的刻面上添加另一个密度图。

例如,多面图将如下所示:

require(ggplot2)
ggplot(diamonds, aes(price)) + facet_grid(.~clarity) + geom_density()

然后我想在每个方面的顶部分层以下单密度图:

ggplot(diamonds, aes(price)) + geom_density()

此外,带有分面的 ggplot 是做到这一点的最佳方法,还是有首选方法?

4

1 回答 1

21

实现此目的的一种方法是创建diamonds2仅包含 columnprice和两个geom_density()调用的新数据框 - 一个将使用 original diamonds,第二个将使用diamonds2. 因为diamonds2没有列clarity,所有值都将用于所有方面。

diamonds2<-diamonds["price"]
ggplot(diamonds, aes(price)) + geom_density()+facet_grid(.~clarity) + 
     geom_density(data=diamonds2,aes(price),colour="blue")

在此处输入图像描述

更新- 正如@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()

在此处输入图像描述

于 2013-04-05T13:22:34.357 回答