如何在使用 R 中 plotly 包中的 ggplotly() 时自定义悬停信息?

How to customize hover info while using ggplotly() from plotly package in R?

我正在向最初在 ggplot2 中制作但我通过 plotly 打包成一个 plotly 对象。悬停显示我不需要的信息(点坐标)并且有几个 o 变量我需要显示其值但我找不到方法。

下一个例子说明了我的问题。我把一张ggplot2的图转成了一张plotly的图,如下图:

library(ggplot2)
library(plotly)
p1 <- ggplot(iris, aes(Sepal.Length, Petal.Width))+
        geom_smooth()
ggplotly(p1)

然后我想添加一个带有一些点的图层并将某些信息放在悬停中,这样我就可以识别每个点是哪个物种。我的意思是我希望 Species 信息出现在悬停中,而不会将变量 Species 放入 ggplot() 函数的美学中。

我最接近的是这个,但它也不起作用:

ggplotly(p1) %>%
        add_markers(data=iris[1:10,], x=~Sepal.Length, y=~Petal.Width) %>%
        style(hoverlabel="Species")

我想知道是否可以将不属于美学集的其他变量的值放在悬停中,我是否可以删除不需要的变量。

执行以下操作会将物种添加到现有标签中:

p1 <- ggplot(iris, aes(Sepal.Length, Petal.Width))+
  geom_smooth()

ggplotly(p1) %>%
  add_markers(data=iris[1:10,], x=~Sepal.Length, y=~Petal.Width) %>% 
  style(hovertext=iris[1:10,"Species"])

关于将工具提示文本构建到 ggplot 的美学元素中的类似问题也有一个很好的答案 。在我做的一些测试中,如果您在点美学中的 label 中指定变量,那么 ggplotly(p1) 会将其添加到现有标签中。如果您改为调用 ggplotly(p1, tooltip="label"),它只会在工具提示中打印 Species: <species>。如果您在点美学中指定 text 而不是 label,并调用 ggplotly(p1, tooltip="text"),您只会在工具提示中获得物种名称本身。