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

R 在ggplot2不同数据集中混合直方图和密度图,r,ggplot2,histogram,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 histog

我想要一个显示一个数据集直方图和另一个数据集密度图的图

我可以绘制直方图和密度图,但我无法消除不需要的直方图/密度图

例如:

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

种子(1234);dat这不会保留颜色,但一般来说,您要做的是为整个绘图使用不同的data=参数和一个geom参数:

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)
库(ggplot2)
种子(1234);

太完美了!谢谢你这正是我需要的!我更喜欢这个,更干净。谢谢你的回复