【问题标题】:Display frequency instead of count with geom_bar() in ggplot在 ggplot 中使用 geom_bar() 显示频率而不是计数
【发布时间】:2013-11-07 12:29:37
【问题描述】:

this page,他们给出了下面的例子

library(ggplot2)
library(reshape2)
ggplot(data=tips, aes(x=day)) + geom_bar(stat="bin")

我希望在 y 轴上有一个频率,而不是计数。我怎样才能做到这一点?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    解决方法见related question:

    pp <- ggplot(data=tips, aes(x=day)) + 
          geom_bar(aes(y = (..count..)/sum(..count..)))
    

    如果您想将频率标记为百分比,请添加以下内容(请参阅here):

    library(scales)
    pp + scale_y_continuous(labels = percent)
    

    【讨论】:

    • ..count..中的点-点符号是什么意思?你对此有什么参考吗?
    • @mcrisc 看看this question
    • 如何获取频率的数据标签,显示在每个条形上方?
    • 我真的希望 geom_bar 生成 ..density.. 变量,就像它的表亲函数 geom_histogram 一样。
    • 我认为 labels=percent in scale_y_continuous(labels = percent) 不再起作用
    【解决方案2】:

    现在..prop.. 可用

    ggplot(data=tips, aes(x=day)) + 
      geom_bar(aes(y = ..prop.., group = 1))
    

    【讨论】:

    • 如果您使用的是构面,则此方法有效,而 ..count.. 选项则无效!
    • @r_alanb 你的意思是添加例如facet_wrap(~sex)?它适用于我。
    • 我应该定义“作品”。如果您使用..count../sum(..count..),它将创建一个数字,但频率将在所有方面总和为 1(我认为)。如果您使用..prop..,则每个方面的频率总和为 1。也许这取决于您要展示的内容。
    • @r_alanb ..count../sum(..count..)..prop 只要你设置 group = 1 对我的工作方式完全相同
    • ggplot(data=tips, aes(x=day)) + geom_bar(aes(y = ..prop.., group = 1)) + facet_wrap(~sex)ggplot(data=tips, aes(x=day)) + geom_bar(aes(y = (..count..)/sum(..count..), group = 1)) + facet_wrap(~sex) 不会为我产生相同的情节。也可以去掉..count..版本中的group=1,看起来还是一样的。
    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2016-01-04
    • 2021-04-07
    相关资源
    最近更新 更多