用不同的变量重叠ggplot2直方图

时间:2014-05-05 19:29:25

标签: r ggplot2 histogram

如果我有两个不同的变量来绘制直方图,我该怎么做?举个例子:

data1 <- rnorm(100)
data2 <- rnorm(130)

如果我想在同一个图中使用data1和data2的直方图,有没有办法呢?

2 个答案:

答案 0 :(得分:4)

只需添加另一个geom_histogram图层,即可将它们放在同一个图中:

## Bad plot
ggplot() + 
  geom_histogram(aes(x=data1),fill=2) + 
  geom_histogram(aes(x=data2)) 

然而,更好的想法是使用密度图:

d = data.frame(x = c(data1, data2), 
               type=rep(c("A", "B"), c(length(data1), length(data2))))
ggplot(d) + 
  geom_density(aes(x=x, colour=type))

或facets:

##My preference
ggplot(d) + 
  geom_histogram(aes(x=x)) + 
  facet_wrap(~type)

或使用条形图(感谢@rawr)

ggplot(d, aes(x, fill = type)) + 
  geom_bar(position = 'identity', alpha = .5)

答案 1 :(得分:2)

@ csgillespie的回答略有变化和补充:

ggplot(d) + 
  geom_density(aes(x=x, colour=type, fill=type), alpha=0.5)

给出: enter image description here