R plotly link 子图,以便在悬停时显示多个工具提示

R plotly link subplots so that multiple tooltips shown on hover

我有分组数据。对于每个组,我都在 plotly 中绘制了一个子图。所有这些子图的 x 值对应于相同的描述,只是 y 轴值缺失或跨组不同。我想 link 这些子图,这样如果我将鼠标悬停在一个子图中的一个点上,它也会突出显示其他子图中具有相同 x 值的点。我已经尝试过 crosstalk 包示例,但要么我创建的子图错误,要么我不明白如何使用它。 有人有经验吗?

更新:

df <- data.frame(
     ID = rep(1:4, times = 2), 
     Value = rnorm(8),
     group = c(1,1,1,1,2,2,2,2)
 )

subplot(
     plot_ly(df[df$group==1,], x = ~ID, y = ~Value),
     plot_ly(df[df$group==2,], x = ~ID, y = ~Value), nrows = 2
 )

我的问题是,如果我将鼠标悬停在其中一个点上,如何突出显示所有子图中具有相同 x 值的点?

使用库 crosstalk,您首先需要将数据框转换为 SharedData 对象以用于多个连接的绘图。

使用函数facet_grid(),您可以根据变量的水平创建单独的图形。

library(plotly)
library(crosstalk)
library(tidyverse)

df <- data.frame(
  ID    = rep(1:4, times = 2), 
  Value = rnorm(8), 
  group = c(1, 1, 1, 1, 2, 2, 2, 2)
)

shared_df <- SharedData$new(df)

ggplotly(
  shared_df %>%
    ggplot(aes(x = ID, y = Value)) + 
    geom_point() +
    facet_grid(~ group)
)

在结果中,如果您单击左图上的一个点,它也会在右图上突出显示同一点。