ggplot2: Is there a way to overlay a single plot to all facets in a ggplot

ggplot2, r

Solution

One way to achieve this would be to make new data frame `diamonds2` that contains just column `price` and then two `geom_density()` calls - one which will use original `diamonds` and second that uses `diamonds2`. As in `diamonds2` there will be no column `clarity` all values will be used in all facets.

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

UPDATE - as suggested by @BrianDiggs the same result can be achieved without making new data frame but transforming it inside the `geom_density()`.

ggplot(diamonds, aes(price)) + geom_density()+facet_grid(.~clarity) +
     geom_density(data=transform(diamonds, clarity=NULL),aes(price),colour="blue")

Another approach would be to plot data without faceting. Add two calls to `geom_density()` - in one add `aes(color=clarity)` to have density lines in different colors for each level of `clarity` and leave empty second `geom_density()` - that will add overall black density line.

ggplot(diamonds,aes(price))+geom_density(aes(color=clarity))+geom_density()

Problem

I would like to use ggplot and faceting to construct a series of density plots grouped by a factor. Additionally, I would like to a layer another density plot on each of the facets that is not subject to the constraints imposed by the facet. For example, the faceted plot would look like this: ``` require(ggplot2) ggplot(diamonds, aes(price)) + facet_grid(.~clarity) + geom_density() ``` and then I would like to have the following single density plot layered on top of each of the facets: ``` ggplot(diamonds, aes(price)) + geom_density() ``` Furthermore, is ggplot with faceting the best way to do this, or is there a preferred method?

Original source