如何对geom_text中嵌套在其他文本内的数值进行取整?
嘿,这个问题其实很好解决——你只需要在构建文本标签的时候,直接对嵌套的数值用取整函数就行啦!
核心解决思路
在geom_text()的label参数里,你可以把需要取整的Total数值用取整函数包裹,再嵌套进paste()中。常用的取整函数有:
round(x):四舍五入到整数(或指定小数位数,比如round(x, 1)保留1位小数)floor(x):向下取整(比如123.9变成123)ceiling(x):向上取整(比如123.1变成124)
修改后的完整代码示例
结合你给出的代码片段,这里是补全并修改后的版本:
library(dplyr) library(tidyr) library(ggplot2) eu_chats %>% spread(type, count, fill = 0) %>% # 将count列拆分为Missed和Completed两列 mutate(Total = Completed + Missed) %>% # 创建Total列 ggplot(aes(date, Total)) + geom_col(aes(fill = "Total"), colour = "black") + # 总数量柱形图 geom_col(aes(y = Missed, fill = "Missed"), colour = "black") + # 未处理数量柱形图 # 关键修改:用round()对Total取整后再拼接文本 geom_text(aes(label = paste("Total chats:", round(Total))), hjust = 0.5, vjust = -0.5) # 这里可以根据需求调整标签位置
额外说明
- 如果你的
Total因为浮点运算出现了类似100.0000001的多余小数,round(Total)会自动把它转换成干净的100; - 要是需要保留特定小数位数,比如保留1位,就写成
round(Total, 1),这样123.45会变成123.5; - 如果你不需要四舍五入,而是强制截断小数部分,也可以用
as.integer(Total)(注意:这个方式对负数的处理和floor()不同,比如-123.9会变成-123,而floor()会得到-124)。
内容的提问来源于stack exchange,提问作者Mus
相关产品推荐
相关产品推荐

