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

问题描述

我在最初由ggplot2制作的绘图中添加了一层点,但是我通过 plotly打包成一个绘图对象。悬停显示我不需要的信息(点坐标),并且有几个o变量需要显示其值,但找不到解决方法

一个示例显示了我的问题。我将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 here的美学元素中的类似问题,也有很好的答案。在我所做的测试中,如果您在美学上要点label中指定变量,那么ggplotly(p1)会将其添加到现有标签中。如果不是,请致电ggplotly(p1,tooltip="label"),这将仅在工具提示中打印Species: <species>。如果您在美学要点上指定label而不是text,然后调用ggplotly(p1,tooltip="text"),您将在工具提示中获得物种名称本身。