【问题标题】:R + ggplot2, multiple histograms in the same plot with each histogram normalised to unit area?R + ggplot2,同一图中的多个直方图,每个直方图归一化为单位面积?
【发布时间】:2014-12-31 16:44:28
【问题描述】:

对不起,新手 R 问题...

我有一个包含单个变量测量值的 data.frame。这些测量值将根据被测量的事物是 A 类还是 B 类而分布不同;也就是说,你可以想象我的列名是:measurement,type label(A或B)。我想分别绘制 A 和 B 测量值的直方图,并将两个直方图放在同一个图中,每个直方图归一化为单位面积(这是因为我预计 A 和 B 的比例会有很大差异)。单位面积是指A和B各有单位面积,而不是A+B有单位面积。基本上,我想要 geom_density 之类的东西,但我不想要每个的平滑分布;我想要直方图条。不是交错的,而是将一个绘制在另一个之上。没有堆叠,尽管知道如何做到这一点也会很有趣。 (此图的目的是探索分布形状的差异,这表明 A 和 B 之间存在数量差异,可用于区分它们。)仅此而已。两个或多个直方图 - 未平滑的密度图 - 在同一个图中,每个都归一化为单位面积。谢谢!

【问题讨论】:

  • 您会想要更明确地表达您的问题 - 代码示例,甚至是绘制的图片。无论如何,我认为link 应该回答你的问题。

标签: r plot ggplot2 histogram


【解决方案1】:

这样的?

# 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 倍。

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

【讨论】:

  • 谢谢,这几乎正是我所需要的;如果我在 alpha=0.something 的同一个 y 轴(即没有多个面)上绘制两个直方图,我得到的正是我想要的。非常有帮助! (有趣的是,我注意到如果任何类型为 NA,它们也会得到直方图,但没有图例条目。如果您不知道被测量的事物是 A 型还是 B 型,则可能会发生这种情况。)
猜你喜欢
  • 2018-08-02
  • 1970-01-01
  • 2013-06-20
  • 2012-02-20
  • 1970-01-01
  • 2014-06-19
  • 2018-06-08
  • 2013-06-20
  • 2011-09-06
相关资源
最近更新 更多