使用 ggplotly 时在 plotly 中格式化鼠标悬停在标签上

Formatting mouse over labels in plotly when using ggplotly

我在使用 ggplotly 和鼠标悬停功能时遇到文本格式问题。

library(plotly)
df <- data.frame(a=letters, b=LETTERS, x=runif(26), y=runif(26))
g <- ggplot(df, aes(x,y)) + geom_point(aes(text=sprintf('letter: %s\nLetter: %s', a, b)))
g
(gg <- ggplotly(g))

我希望在我的鼠标悬停在标签上时有一些格式化文本或至少一个换行符。是否有关于如何设计鼠标悬停在气泡上的好文档?

plotly 可以使用换行符 HTML 标签。使用 <br> 标签作为换行符后,你可以得到你想要的:

g <- ggplot(df, aes(x,y)) + 
       geom_point(aes(text=sprintf("letter: %s<br>Letter: %s", a, b)))

(gg <- ggplotly(g))

参见tooltip argument to ggplotly()。例如,要在悬停时仅显示物种名称(例如 virginica 右上角):

g <- ggplot(tail(iris), aes(Petal.Length, Sepal.Length, text=Species)) + geom_point()
ggplotly(g, tooltip="text")

其他示例:

ggplotly(g, tooltip="x")             # Petal.Length: 5.7
ggplotly(g, tooltip="Petal.Length")  # Petal.Length: 5.7
ggplotly(g, tooltip=c("x", "y"))

最后一个示例将显示两行工具提示

Petal.Length: 5.7
Sepal.Length: 6.7

这是使用 purrr's map function 的解决方案。它的工作原理让我感到有点惊讶,但我喜欢它。

我将 'letter:' 和 'Letter:' 标题加粗了。这仍然会打印 x-y 坐标,您可以使用 ggplotly() 中的参数 tooltip 将其删除。

df <- data.frame(a=letters, b=LETTERS, x=runif(26), y=runif(26))
g <- ggplot(df, aes(x,y)) + 
         geom_point(aes(text=map(paste('<b>letter:</b>', a, '<br>', '<b>Letter:</b>', b), HTML)))
g
(gg <- ggplotly(g))