使用ggplot2绘制柱状图时如何在标签上显示全部有效数字(含尾部零)
问题原因
round(test, digits=2)返回的是数值类型,R默认会自动省略数值尾部无意义的零,因此0.60会被识别为0.6,最终只显示一位小数。
解决方法
将数值格式化为固定保留两位小数的字符串即可,推荐使用sprintf()函数实现,该函数可以强制指定输出的小数位数,自动补全尾部的零。
修改后的完整代码
ggplot(data, aes(product,test))+ # 注:原代码中geom_col和geom_bar(stat="identity")功能重复,保留一个即可 geom_bar(stat="identity", col = "grey", fill="black")+ coord_flip()+ labs(title="Product comparisons")+ theme(text=element_text(size=20))+ theme(axis.text.y=element_text(size=12))+ ylim(NA, 0.90)+ # 仅修改geom_text的label参数即可 geom_text(aes(label=sprintf("%.2f", test)), nudge_y= -0.05, color="white", size = 6)
如果偏好使用format()函数实现,也可以将label参数替换为:label=format(round(test, 2), nsmall = 2)
其中nsmall=2参数强制要求至少保留2位小数,同样会补全尾部的零。
内容的提问来源于stack exchange,提问作者sneeze_shiny
相关产品推荐
相关产品推荐

