ggplot2条形图Y轴自动扩展及顶部展示计数和百分比实现咨询
ggplot2条形图功能实现解决方案
1. 自动设置Y轴上限为最大计数值+3
- 方案1(无需提前统计数据,推荐):将原
scale_y_continuous(limits = c(0,25))替换为如下代码,通过expansion参数设置加法扩展量,自动在Y轴最大值基础上新增3个单位的空间:
scale_y_continuous(expand = expansion(mult = c(0, 0), add = c(0, 3)))
- 方案2(提前统计频数):如果需要精确控制上限值,可先对数据集做频数统计拿到最大值再传入:
# 假设你的原始数据集名为df,分组列名为group_col library(dplyr) max_count <- df %>% count(group_col) %>% pull(n) %>% max() # 替换原scale_y_continuous行 scale_y_continuous(limits = c(0, max_count + 3))
2. 条形顶部同时展示加粗的计数和百分比
修改原geom_text代码,通过paste0拼接计数值和百分比,新增fontface = "bold"实现文本加粗,代码如下:
geom_text(stat='count', aes(label = paste0(..count.., " (", round(..count../sum(..count..)*100), "%)")), vjust=-0.5, fontface = "bold")
如果需要保留1位小数的百分比,将round(..count../sum(..count..)*100)修改为round(..count../sum(..count..)*100, 1)即可。
修改后完整示例代码
# 假设使用的原始数据集为df,x轴映射列名为group_col ggplot(df, aes(x = group_col)) + geom_bar(colour="black",fill="darkgrey") + theme_apa() + theme( plot.title = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank()) + # 修改后的文本标签 geom_text(stat='count', aes(label = paste0(..count.., " (", round(..count../sum(..count..)*100), "%)")), vjust=-0.5, fontface = "bold") + # 修改后的Y轴设置 scale_y_continuous(expand = expansion(mult = c(0, 0), add = c(0, 3)))
内容的提问来源于stack exchange,提问作者Georgios Mavropalias
相关产品推荐
相关产品推荐

