如何在R语言ggplot柱状图上添加保留两位小数的百分比标签
ggplot柱状图百分比标签设置方法
你调用scales::percent()时没有正确配置scale和accuracy参数,才会出现格式不符的问题:
scales::percent()默认scale=100,会自动将输入数值乘以100后加百分号,你的Avg_Cost已经是乘以100后的百分比数值(比如5.3对应5.3%),所以需要设置scale=1避免重复换算accuracy参数控制小数点保留位数,设置accuracy=0.01即可固定保留两位小数
修改后的完整可运行代码如下:
library(ggplot2) df <- data.frame(Seller=c("Ad","Rt","Ra","Mo","Ao","Do"), Avg_Cost=c(5.30,3.72,2.91,2.64,1.17,1.10), Num=c(6:1)) plotB <- ggplot(df, aes(x = reorder(Seller, Avg_Cost), y = Avg_Cost)) + # 原代码geom_col和geom_bar(stat="identity")功能重复,保留一个即可 geom_col(width = 0.7, fill="steelblue") + coord_flip() + theme(panel.background = element_blank(), axis.title.x = element_blank(), axis.title.y = element_blank()) + # 仅修改此处标签格式配置即可 geom_text(aes(label=scales::percent(Avg_Cost, scale = 1, accuracy = 0.01)), size=5, hjust=-.2 ) + ylim(0,6) plotB
如果你不想依赖scales包,也可以用基础字符拼接实现相同效果,将geom_text的label参数替换为paste0(round(Avg_Cost, 2), "%")即可。
内容的提问来源于stack exchange,提问作者JK Lambert
相关产品推荐
相关产品推荐

