【问题标题】:Normalizing faceted histograms separately in ggplot2在ggplot2中分别标准化多面直方图
【发布时间】:2013-04-26 16:39:08
【问题描述】:

我的问题类似于 Normalizing y-axis in histograms in R ggplot to proportion 但我想补充一点。

一般来说,我在 2x3 刻面设计中有 6 个直方图,我想分别对它们中的每一个进行归一化。我将尝试在这里制作一个示例数据集以提供一个想法:

hvalues=c(3,1,3,2,2,5,1,1,12,1,4,3)
season=c("fall","fall","fall","fall","winter","winter","winter","winter","summer","summer","summer","summer")
year=c("year 1","year 1","year 2","year 2","year 1","year 1","year 2","year 2","year 1","year 1","year 2","year 2")
group=c("fall year 1","fall year 1","fall year 2","fall year 2","winter year 1","winter year 1","winter year 2","winter year 2","summer year 1","summer year 1","summer year 2","summer year 2")
all=data.frame(hvalues,season,year)

使用

ggplot(all, aes(x=hvalues,group=group)) + 
geom_histogram(aes(y=..count../sum(..count..))) + 
facet_grid(season ~ year)

给出整体比例(即结合所有方面)。我希望将每个组方面标准化为 1。hvalues 在我的实际数据中不是整数 - 它们是数字。

我是使用 R 的新手,非常感谢一些帮助。提前致谢!

【问题讨论】:

  • 试试y = ..density..
  • all 必须是一个数据框。试试all <- as.data.frame(cbind(hvalues,season,year))
  • @JT85 我同意,但请不要鼓励使用as.data.frame(cbind(...)) 代替data.frame(...)
  • 查看?stat_bin 并尝试那里的选项。我想..ncount.. 可能就是你要找的东西。
  • 叹息。确切地。在每个方面缩放到 1 正是你所说的你想要的。我现在继续。

标签: r ggplot2 normalization histogram facet


【解决方案1】:

解决办法是:

ggplot(all, aes(x=hvalues)) +
    facet_grid(season ~ year,drop=T) +
    geom_histogram(aes(y=(..count..)/tapply(..count..,..PANEL..,sum)[..PANEL..]))

我从这个question偷了这个

顺便说一句,我觉得你的问题可能与那个问题重复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2016-01-13
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    相关资源
    最近更新 更多