R + ggplot2,同一图中的多个直方图,每个直方图归一化为单位面积?

时间:2014-11-04 17:18:00

标签: r plot ggplot2 histogram

抱歉新手R问题......

我有一个包含单个变量测量值的data.frame。这些测量结果将根据被测物体是A型还是B型而分布不同;也就是说,你可以想象我的列名是:measurement,type label(A或B)。我想分别绘制A和B的测量直方图,并将两个直方图放在同一个图中,每个直方图标准化为单位面积(这是因为我希望A和B的比例显着不同)。按单位面积,我的意思是A和B各有单位面积,而不是A + B有单位面积。基本上,我想要像geom_density这样的东西,但是我不希望每个都有平滑的分布;我想要直方图条。不是交错的,而是一个在另一个上面绘制。没有堆叠,虽然知道如何做也会很有趣。 (这个图的目的是探索分布形状的差异,这些差异表明A和B之间存在可以用来区分它们的数量差异。)这就是全部。两个或多个直方图 - 不是平滑的密度图 - 在同一图中,每个都标准化为单位面积。谢谢!

1 个答案:

答案 0 :(得分:3)

这样的东西?

# generate example
set.seed(1)
df <- data.frame(Type=c(rep("A",1000),rep("B",4000)),
                 Value=c(rnorm(1000,mean=25,sd=10),rchisq(4000,15)))
# you start here...
library(ggplot2)
ggplot(df, aes(x=Value))+
  geom_histogram(aes(y=..density..,fill=Type),color="grey80")+
  facet_grid(Type~.)

请注意,B类型的样本数量是其中的4倍。

您还可以使用scales="free_y"调用中的facet_grid(...)将y轴刻度设置为浮动。