【问题标题】:histogram ggplot2 wrong frequency直方图ggplot2错误频率
【发布时间】:2015-07-21 14:45:26
【问题描述】:

大家好,我在使用 ggplot2 时遇到了困难。

我正在尝试制作一个直方图,例如:5 个年龄段 (A = x) 的性别(男性和女性 = y)与癌症 (C) 的百分比。

pp <- ggplot(data=base, aes(x=AGE, y=factor(C), fill=Sex)) + 
  geom_bar(aes(y = (..count..)/sum(..count..)))+
  scale_fill_grey()+
  theme_bw()
pp

我有直方图,但频率错误。谁能告诉我为什么?

我很难自己解决。

提前致谢

【问题讨论】:

标签: r ggplot2 histogram


【解决方案1】:

也许使用geom_histogram:

PP <- ggplot(base[base$C==TRUE,], aes(x=AGE, fill=Sex))
PP <- PP + geom_histogram()

注意:我不知道 C 是否被编码为布尔值。

UPDATE - 频率如下获得:

PP <- ggplot(base[base$C==TRUE,], aes(x=AGE, fill=Sex))
PP <- PP + geom_histogram(aes(y = ..density..))

更新 - OP 的澄清表明他毕竟不是在寻找直方图:

因此,对于所需的条形图,您需要稍微重新排列数据并创建一个汇总版本,例如,使用plyr::ddply()

require(plyr)
baseA <- ddply(base, .(AGE,Sex), summarize, cancerShare=sum(C==TRUE)/length(C))

之后我们可以绘制这样的条形图:

g <- ggplot(baseA,aes(x=as.factor(AGE),y=cancerShare,fill=Gender))
g <- g + geom_bar(stat="identity",position="dodge")
g

【讨论】:

  • 是的,CMicheal C 是一个布尔值。坦克四你的答案。但问题是我想要频率而不是泰恩计数。
  • 谢谢 CMichael 我试过了,但不幸的是它仍然没有给我每个组的百分比:(。我也试过:aes(y = (..count..)/sum(..count. .)))+
  • 您是否真的在寻找直方图,或者更确切地说是带有 5*2 条的条形图,指示您的 5 个年龄组和 2 个性别的癌症/无癌症分裂?
  • 是的,CMicheal 这绝对是我的目标!你能帮我解决这个问题吗?提前致谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 2018-10-12
  • 2020-05-21
  • 2015-10-11
  • 2013-10-09
  • 2011-08-14
相关资源
最近更新 更多