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

后端 未结 1 819
臣服心动
臣服心动 2021-02-13 00:25

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 fac

1条回答
  •  别跟我提以往
    2021-02-13 00:44

    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")
    

    enter image description here

    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()
    

    enter image description here

    0 讨论(0)
提交回复
热议问题