【问题标题】:How do I create a frequency stacked bar chart however have percentage labels on the bars and frequencies on the y axis, in R?如何创建频率堆叠条形图,但是在 R 中,条形图上有百分比标签,y 轴上有频率?
【发布时间】:2020-03-31 16:54:09
【问题描述】:

我从下面的代码开始,但是它没有显示正确的输出。我想要一个正常的频率堆积条形图来显示条形上的百分比,但在 y 轴上显示频率。请问有大神可以给点建议吗?

ggplot(data = df, mapping = aes(x = Family_Size, y = Freq, fill = Survived)) + geom_bar(stat = "identity") + geom_text(aes(label = paste0(df$Percentage),y=Percentage),size = 3) + theme(plot.title = element_text(hjust = 0.5))

<table><tbody><tr><th>Survived</th><th>Family_Size</th><th>Frequency</th><th>Percentage</th></tr><tr><td>Yes</td><td>1</td><td>20</td><td>20%</td></tr><tr><td>No</td><td>1</td><td>80</td><td>80%</td></tr><tr><td>Yes</td><td>2</td><td>40</td><td>40%</td></tr><tr><td>No</td><td>2</td><td>60</td><td>60%</td></tr></tbody></table>

【问题讨论】:

    标签: r ggplot2 stacked-chart


    【解决方案1】:

    你在寻找类似的东西吗?

    ggplot(df, aes(x = Family_Size, y = Frequency, fill = Survived))+
      geom_col()+
      scale_y_continuous(breaks = seq(0,100, by = 20))+
      geom_text(aes(label = Percentage), position = position_stack(0.5))
    


    编辑:用两位小数格式化百分比

    ggplot(df, aes(x = Family_Size, y = Frequency, fill = Survived))+
      geom_col()+
      scale_y_continuous(breaks = seq(0,100, by = 20))+
      geom_text(aes(label = paste(format(round(Frequency,2),nsmall = 2),"%")), position = position_stack(0.5))
    


    可重现的示例

    structure(list(Survived = c("Yes", "No", "Yes", "No"), Family_Size = c(1L, 
    1L, 2L, 2L), Frequency = c(20L, 80L, 40L, 60L), Percentage = c("20%", 
    "80%", "40%", "60%")), row.names = c(NA, -4L), class = c("data.table", 
    "data.frame"))
    

    【讨论】:

    • 是的,确切地说,这很有帮助!谢谢!最后,无论如何,百分比标签可以到小数点后一位或两位...即不是 40%,而是两位小数的 40.00%?如果我有其他百分比值,这将有助于精确。
    • 不客气;)我编辑了我的答案,向您展示如何添加带两位小数的格式化百分比。让我知道它是否适合你
    猜你喜欢
    • 2018-12-15
    • 2013-05-18
    • 2016-10-15
    • 1970-01-01
    • 2022-01-08
    • 2021-01-17
    • 1970-01-01
    • 2022-01-22
    • 2023-04-03
    相关资源
    最近更新 更多