如何为ggplotly悬停提示框内的数值添加千位分隔符
实现方案
下面提供两种常用的实现方式,可根据开发习惯选择:
方法1:在ggplot层自定义悬停文本(推荐,适配ggplot开发逻辑)
在aes()中新增text参数自定义悬停展示内容,用格式化后的数值替换原始数值,调用ggplotly()时指定tooltip = "text"即可生效。需要空格作为千位分隔符时,把big.mark参数改为" "即可。
library(tidyverse) library(plotly) data <- data.frame(Values = c(1000, 2000, 3000), Category = c('one', 'two', 'three')) p <- data %>% ggplot(aes(x = Category, y = Values, text = paste0("Category: ", Category, "\nValues: ", format(Values, big.mark = ",", scientific = FALSE)))) + geom_bar(stat = 'identity') p %>% ggplotly(tooltip = "text")
你也可以用scales包的格式化函数替换base R的format,把format(Values, big.mark = ",", scientific = FALSE)改为scales::comma(Values)即可,效果一致。
方法2:在plotly对象层调整布局参数
如果你不想修改原有ggplot的代码,也可以在生成plotly对象后,通过布局参数开启千位分隔符:
library(tidyverse) library(plotly) data <- data.frame(Values = c(1000, 2000, 3000), Category = c('one', 'two', 'three')) p <- data %>% ggplot(aes(x = Category, y = Values)) + geom_bar(stat = 'identity') p %>% ggplotly() %>% layout(yaxis = list(separatethousands = TRUE))
该方案直接调用plotly原生参数实现格式调整,无需修改原有ggplot的美学映射。
内容的提问来源于stack exchange,提问作者Tanga94
相关产品推荐
相关产品推荐

