R语言ggplot2绘制相关性矩阵热图如何限制小数位数为两位
解决方法
你之前设置的accuracy = 0.01未生效,是因为这个参数不属于aes中value变量的直接属性,需要对文本标注的内容做格式化处理,两种常用实现方案如下:
方案1:用round函数快速保留2位小数
直接修改代码中geom_text对应的行,将label = value改为label = round(value, 2)即可:
ggheatmap + geom_text(aes(Var2, Var1, label = round(value, 2)), color = "black", size = 2) + theme( axis.title.x = element_blank(), axis.title.y = element_blank(), panel.grid.major = element_blank(), panel.border = element_blank(), panel.background = element_blank(), axis.ticks = element_blank(), legend.justification = c(1, 0), legend.position = c(0.6, 0.7), legend.direction = "horizontal")+ guides(fill = guide_colorbar(barwidth = 7, barheight = 1, title.position = "top", title.hjust = 0.5))
该方案实现简单,但如果数值末尾为0会自动省略,比如0.20会显示为0.2。
方案2:固定显示2位小数(末尾补0)
如果需要统一保留两位小数,即使末尾为0也显示(比如0.2显示为0.20),可以调用scales包的number函数,accuracy参数就是该函数的入参:
# 先安装加载scales包(如果未安装) # install.packages("scales") library(scales) ggheatmap + geom_text(aes(Var2, Var1, label = number(value, accuracy = 0.01)), color = "black", size = 2) + theme( axis.title.x = element_blank(), axis.title.y = element_blank(), panel.grid.major = element_blank(), panel.border = element_blank(), panel.background = element_blank(), axis.ticks = element_blank(), legend.justification = c(1, 0), legend.position = c(0.6, 0.7), legend.direction = "horizontal")+ guides(fill = guide_colorbar(barwidth = 7, barheight = 1, title.position = "top", title.hjust = 0.5))
内容的提问来源于stack exchange,提问作者Janet
相关产品推荐
相关产品推荐

