使工具提示出现在 plotly 对象中不同 ggplot2 方面的对应点上

Make tooltip appear on corresponding points in different ggplot2 facets in a plotly object

我正在使用 ggplot2plotly R 包来生成火山图以可视化蛋白质差异丰度数据。

library(ggplot2)
library(plotly)

nVals <- 80
nFacets <- 2

#example dataset
proteins <- rep(paste0('protein_', c(1:(nVals / nFacets))), nFacets)
set.seed(1)
dat <- data.frame(log_FC = c(rnorm(nVals*0.8, 0, 1), rnorm(nVals*0.2, 0, 12)),
                  log_Pval = abs(rnorm(nVals, mean=0, sd=0.01)),
                  facet = rep(paste0('Cell line ', 1:nFacets), nVals / nFacets),
                  protein = proteins[order(proteins)])


#make ggplot2 object
p <- ggplot(dat, aes(y = log_Pval, x = log_FC, text = protein)) +
  facet_wrap(~ facet) +
  geom_point()

#convert p to plotly object with plotly::ggplotly
ggplotly(p)
当前输出

Example

我正在使用 plotly 中的工具提示功能来显示与每个点相关的数据。我想扩展工具提示功能以在绘图的不同方面突出显示相同的蛋白质。

换句话说,当光标悬停在 1 个方面的一个点上时,工具提示框将显示在 [=14= 中具有相同值的所有点上] 相邻方面的列。

Here 是我的目标示例。

是否有一些方法可以自定义工具提示的行为来实现我所描述的?

使用 crosstalk,您可以让小部件相互通信。从您的数据框中创建一个 SharedData 对象,并将 select protein 作为键。

library(crosstalk)
shared_df <- SharedData$new(dat, key = ~protein)

然后,使用 shared_df 而不是 datggplot。如果您 select 一个图中的一个点,它将在第二个图中突出显示匹配的数据点(protein)。如果这符合您的需求,请告诉我。