R绘图链接子图,以便在悬停时显示多个工具提示

时间:2019-02-06 20:21:55

标签: r r-plotly

我有分组数据。对于每个组,我都以绘图方式绘制子图。所有这些子图的x值都对应相同的描述,只是y轴值在组中丢失或不同。我想链接这些子图,以便如果将鼠标悬停在一个子图中的一个点上,它还将在其他子图中突出显示具有相同x值的点。我已经试过了相声包示例,但是要么我创建了错误的子图,要么不知道如何使用它。 有人有经验吗?

更新:

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值突出显示这些点?

1 个答案:

答案 0 :(得分:0)

使用库 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)
)

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

enter image description here