如何在ggplot比例条形图Y轴类别中添加样本量与百分比?
实现ggplot2带误差棒的比例条形图并自定义Y轴标签
需要绘制带误差棒的比例条形图,将Y轴的类别名称设置为包含样本量与百分比的格式(例如:Male (n=203/360, 56.38%))。
解决方案
核心是先在数据框中生成自定义的Y轴标签列,再将其用于ggplot的y轴映射:
- 使用
dplyr::mutate创建新列,拼接类别名称、样本量和百分比信息,保留百分比两位小数 - 在ggplot的全局映射中使用该新列作为y轴变量,误差棒将自动继承此映射
完整代码
library(ggplot2) library(dplyr) # 生成自定义Y轴标签列 variable_count_census <- variable_count_census %>% mutate( y_label = paste0( category, " (n=", sur_count, "/", total_sample, ", ", sprintf("%.2f", sur_percentage), "%)" ) ) # 绘制条形图 variable_count_census %>% ggplot(mapping = aes(x = prop, y = y_label)) + geom_bar(stat = "identity", colour = "black") + geom_errorbar( aes(xmin = conf_low_percent, xmax = conf_high_percent), width = 0.4, colour = "orange", alpha = 0.9, size = 1.3 ) + labs(x = "咬伤比例", y = "受害者性别") + ggtitle("咬伤受害者的性别分布")
关键说明
sprintf("%.2f", sur_percentage)确保百分比保留两位小数,格式更规范- 新列
y_label直接作为y轴变量,替代原category,实现自定义Y轴文本 - 误差棒无需单独指定
y参数,继承全局映射即可保证位置正确
内容的提问来源于stack exchange,提问作者Rakesh Chand
相关产品推荐
相关产品推荐

