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

Mix histogram and density plot in ggplot2 different datasets

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

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

例如:

    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)

给我一个看起来像这样的情节:

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

如有任何帮助,我们将不胜感激!

这不会保留颜色,但一般来说,您想要做的是对整个绘图和其中一个 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",])

这是我的做法,通过单独的数据集将 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)