【问题标题】:Create histogram of count frequencies in ggplot2在 ggplot2 中创建计数频率的直方图
【发布时间】:2016-08-03 13:49:04
【问题描述】:

假设我有以下数据框:

d = data.frame(letter = c(
    'a', 'a', 'a', 
    'b', 'b', 'b', 
    'c',
    'd', 'd', 'd', 'd',
    'e', 'e', 
    'f', 'f', 'f', 'f', 'f', 'f', 'f',
    'g'))

如何使用ggplot2 制作不计算给定字母出现次数的直方图,而是计算给定字母出现频率的次数?在这个例子中:

table(d$letter)

a b c d e f g 
3 3 1 4 2 7 1 

两个字母 (c 和 g) 出现一次,一个字母 (e) 出现两次,两个字母出现 3 次,等等。这样您就可以制作一个与基图等效的图形:

hist(table(d$letter), right = F, breaks = 6)

【问题讨论】:

    标签: r ggplot2 histogram


    【解决方案1】:

    您可以将table的结果转换为数据框,然后使用ggplot

    df <- as.data.frame(table(d$letter))
    ggplot(df, aes(x = Freq)) +
        geom_histogram(binwidth = 1)
    

    这是因为包含频率的列默认称为Freq

    head(df)
    ##   Var1 Freq
    ## 1    a    3
    ## 2    b    3
    ## 3    c    1
    ## 4    d    4
    ## 5    e    2
    ## 6    f    7
    

    如果您想让条形图位于整数之间,您可以使用 center = 0.5 将 bin 置于半整数的中心。我也用closed = "left",相当于hist()中的right = FALSE

    ggplot(df, aes(x = Freq)) +
      geom_histogram(binwidth = 1, center = 0.5, closed = "left") +
      scale_x_continuous(breaks = 1:7)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2013-10-09
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多