R сюжетно связывает субплоты, чтобы при наведении курсора отображалось несколько подсказок - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть данные с группами.Для каждой группы я строю сюжет на графике.Значения 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 голосов
/ 06 февраля 2019

С библиотекой crossstalk сначала необходимо преобразовать ваш фрейм данных в объект 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

...