如何在R语言的堆叠柱状图中添加计数标签?
解决堆叠柱状图添加标签的问题
你的核心问题是搞错了geom_bar的统计逻辑和geom_text的映射关系,下面给你两种可行的解决方案:
方法1:直接利用ggplot的统计功能
基于你最初的geom_bar(默认统计各组数量),给geom_text指定同样的统计规则,让它自动计算每个堆叠块的数值并添加标签:
ggplot(data=cyclist_data2) + geom_bar(mapping = aes(x=member_casual, fill=rideable_type)) + geom_text( stat="count", aes(x=member_casual, y=..count.., label=..count.., group=rideable_type), position=position_stack(vjust=0.5), # 把标签放在堆叠块垂直中间 colour="black", size=5 )
stat="count":让geom_text和geom_bar一样统计每组的数量..count..:指代ggplot自动计算出的计数结果position_stack(vjust=0.5):调整标签在堆叠块内的位置,vjust值在0-1之间可按需修改
方法2:先手动汇总数据(更适合新手理解)
先用dplyr把数据提前汇总好,再绘图,逻辑更直观:
library(dplyr) # 先统计每个分类组合的数量 summary_data <- cyclist_data2 %>% count(member_casual, rideable_type) # 用汇总后的数据绘图 ggplot(summary_data, aes(x=member_casual, y=n, fill=rideable_type)) + geom_bar(stat="identity") + geom_text( aes(label=n), position=position_stack(vjust=0.5), colour="black", size=5 )
count()函数会生成一个n列,存储每个组合的计数- 绘图时直接用
y=n映射数值,标签也直接用n,逻辑更清晰
另外注意你之前代码里的小错误:colour = black要改成colour = "black",字符串必须加引号。
内容的提问来源于stack exchange,提问作者joo_luis49
相关产品推荐
相关产品推荐

