【问题标题】:Two data series overlayed on the same bar chart/histogram两个数据系列覆盖在同一个条形图/直方图上
【发布时间】:2013-04-07 00:32:48
【问题描述】:

我使用的是ggplot2,我需要在同一个直方图上显示两组数据,并且需要区分它们。目前,我只是将每个系列的颜色设置为 50% 的不透明度,这样我就可以看到彼此隐藏的条形,但这远非理想,看起来真的很难看,而且读起来很混乱。

有没有一种方法可以让 R 智能地覆盖条形图,以便我可以使用完全不透明的条形图,并且永远不会有条形图从视图中隐藏?这是我目前的代码:

library(ggplot2)
dat <- data.frame(a=sample(10, size=100, replace=T),
                  b=sample(10, size=100, replace=T))
ggplot(dat, aes(x=a), fill=rgb(1,0,0,0.5)) + geom_histogram()
                           + geom_histogram(aes(x=b), fill=rgb(0,0,1,0.5))

任何指针都非常感谢。

【问题讨论】:

    标签: r statistics ggplot2 histogram bar-chart


    【解决方案1】:

    以长格式工作,然后使用position_dodge 避开​​重叠的垃圾箱。如果您希望它们仍然重叠,那么您也可以设置alpha

    例如

    library(reshape2)
    ldat <- melt(dat)
    
    
     # slight overlap
     ggplot(ldat, aes(x=value, colour = variable, fill = variable)) + 
        geom_histogram(position = position_dodge(width = 0.5), binwidth = 1, alpha =0.5)
    

    # or the default value
    ggplot(ldat, aes(x=value, colour = variable, fill = variable)) + 
      geom_histogram(position = 'dodge', binwidth = 1)
    

    或者您可以使用分面,这意味着您的问题消失了,因为您不再过度绘制

    ggplot(ldat, aes(x=value)) + 
      geom_histogram(binwidth=1,fill = 'grey', colour = 'black') +
      facet_grid(~variable)
    

    【讨论】:

    • 谢谢!我想我将不得不使用 position_dodge。这似乎仍然不像出版质量的图表,但现在还可以。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2015-01-10
    • 2016-01-02
    相关资源
    最近更新 更多