【问题标题】:Mix histogram and density plot in ggplot2 different datasets在 ggplot2 不同的数据集中混合直方图和密度图
【发布时间】:2015-12-21 10:05:05
【问题描述】:

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

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

例如:

    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)

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

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

任何帮助将不胜感激!

【问题讨论】:

    标签: r ggplot2 histogram


    【解决方案1】:

    这不会保留颜色,但通常您想要做的是为整体图和几何图形之一设置不同的 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",])
    

    【讨论】:

    • 完美!谢谢,这正是我所需要的!
    【解决方案2】:

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

    【讨论】:

    • 我更喜欢这个,更干净。
    • 感谢您的回复
    猜你喜欢
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 2018-01-13
    • 2016-08-11
    • 2015-02-24
    • 1970-01-01
    相关资源
    最近更新 更多