Вы можете получить доступ к тексту всплывающей подсказки как
ply$x$data[[1]]$text
Так что приведенный ниже код может быть полезен
library(ggplot2)
pl = ggplot(dplyr::tibble(x=c(0,5,10),y=c(0,0.5,0.75)), aes(x=x,y=y)) +
geom_point() +
scale_y_continuous(limits=c(0,1), labels=scales::percent)
ply = plotly::ggplotly(pl)
tip = ply$x$data[[1]]$text
tip = do.call('c', lapply(strsplit(tip, 'y:'), function(x){paste0(x[1], 'y:',paste0(x[2], '%'))} ))
ply$x$data[[1]]$text = tip
Редактировать - поместить его в функцию
prc_ggplotly = function(pl = ggplot2::last_plot(), i = 1)
{
ply = plotly::ggplotly(pl)
if(any(grepl('%', ply$x$layout$yaxis$ticktext)))
{
tip = ply$x$data[[i]]$text
tip = do.call('c', lapply(strsplit(tip, 'y:'), function(x) {paste0(x[1], 'y:',paste0(x[2], '%'))} ))
ply$x$data[[i]]$text = tip
}
if(any(grepl('%', ply$x$layout$xaxis$ticktext)))
{
tip = ply$x$data[[i]]$text
tip = do.call('c', lapply(strsplit(tip, '<'), function(x) { paste0(paste0(x[1], '%'), '<', x[2])} ))
ply$x$data[[i]]$text = tip
}
return(ply)
}
Надеюсь, это поможет