r - 在 R 中,如何创建频率堆积条形图,但条形上有百分比标签,y 轴上有频率?

标签 r ggplot2 stacked-chart

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

ggplot(数据 = df,映射 = aes(x = Family_Size,y = 频率,填充 = 幸存))+ geom_bar(stat =“身份”)+ geom_text(aes(标签=paste0(df$百分比),y=百分比),大小=3)+ 主题(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>

最佳答案

您正在寻找类似的东西吗?

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))

enter image description here


编辑:使用两位小数设置百分比格式

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))

enter image description here


可重现的示例

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"))

关于r - 在 R 中,如何创建频率堆积条形图,但条形上有百分比标签,y 轴上有频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60955832/

相关文章:

r - 我想在 for 循环中绘制 ggplot2 中的多个 geom_line ,因此我能够绘制线条,但面临着色问题。任何人都可以建议怎么做

r - 使用 ggplot 的条形图和折线图的多个 y 轴

r - 在 cairo_pdf 中设置粗体样式

R:将隐式缺失值和组填充到数据的整个时间跨度

r - 循环/迭代日期序列会产生奇怪的数字。它们的意义是什么?

r - As_labeller 与 ggplot2 facet_wrap 中的 expression()

r - 覆盖 ggplot2 stat_密度2d 图,各组之间的 alpha channel 恒定

javascript - 如何使用 rollup 为 d3 堆积条形图准备数据

python - 在python中堆叠来自不同系列的三个条形图