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



我在最初用ggplot2绘制的图中添加了一层点,但我通过plotly封装到绘图对象中。悬停显示我不需要的信息(点坐标(,有几个变量我需要显示它的值,但我找不到方法。

下一个例子说明了我的问题。我将ggplot2图转换为plotly图,如下所示:

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

然后我想添加一个带有一些点的层,并在悬停中放置某些信息,这样我就可以识别每个点是哪个物种。我的意思是,我希望物种信息出现在悬停中,而不将变量物种放在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"),则只会在工具提示中获得物种名称本身。

最新更新