在ggplot2不同的数据集中混合直方图和密度图

时间:2015-09-23 22:30:48

标签: r ggplot2 histogram

我希望有一个图表,其中显示一个数据集的直方图和另一个数据集的密度图。

我可以制作直方图和密度图,但我不能让不需要的直方图/密度图消失。

例如:

    library(ggplot2)
      set.seed(1234); dat <- data.frame(cond = factor(rep(c("A","B"), each=200)), 
              rating = c(rnorm(200),rnorm(200, mean=.8)))

    # Overlaid histograms
    ggplot(dat, aes(x=rating, fill=cond)) +
    geom_histogram(aes(y=..density..),binwidth=.5, alpha=.5, position="identity") + geom_density(alpha=.3)

给我一​​个看起来像这样的情节: enter image description here

我想摆脱(例如)红色直方图和蓝色密度图,留下蓝色直方图和红色密度图。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

通过将ggplot图层中的调用分隔为不同的数据集,我将如何做到这一点,以便每个图层只处理您想要的内容。我使数据集不同以使其更加明显。:

library(ggplot2)
set.seed(1234); 
dat <- data.frame(cond = factor(rep(c("A"), each=200)), 
                              rating = c(rnorm(200),rnorm(200, mean=.8)))
dat2 <- data.frame(cond = factor(rep(c("B"), each=200)), 
               rating = c(rnorm(200),rnorm(200, mean=.6)))

# Overlaid histograms
ggplot() +
    geom_histogram(data = dat, aes(x=rating, fill=cond, y=..density..),binwidth=.5, alpha=.5, position="identity") +
    geom_density(data = dat2, aes(x=rating, fill=cond), alpha=.3)

Overlaid plots with two different datasets

答案 1 :(得分:1)

这不会保留颜色,但一般来说你要做的是为整个情节和其中一个geom提供不同的data =参数:

ggplot(dat[dat$cond=="A",], aes(x=rating)) + 
geom_histogram(aes(y=..density..),binwidth=.5, alpha=.5, position="identity") + 
geom_density(alpha=.3,data=dat[dat$cond=="B",])

enter image description here