#r #shiny #plotly #interactive
#r #блестящий #графическое изображение #интерактивный
Вопрос:
Я пытаюсь связать два графика, используя plotly (либо в R, либо в Shiny). Ниже приведен пример. Набор данных содержит десять наблюдений, каждое из которых имеет пять переменных (A, B, C, D, E). Я создаю диаграмму рассеяния, которая содержит все десять наблюдений (десять точек), где только первые две переменные (A и B) используются для значений x и y:
library(plotly)
library(data.table)
dat <- data.frame(ID = paste0("ID",1:10), A = runif(10), B = runif(10), C = runif(10), D = runif(10), E = runif(10))
dat$ID <- as.character(dat$ID)
plot_ly(data = dat, x = ~A, y = ~B)
После этого я использую тот же набор данных для создания линейного графика из десяти наблюдений (десять строк). Только теперь каждое наблюдение (строка) содержит все пять переменных (A, B, C, D, E).
datt <- data.frame(t(dat))
names(datt) <- as.matrix(datt[1, ])
datt <- datt[-1, ]
datt[] <- lapply(datt, function(x) type.convert(as.character(x)))
setDT(datt, keep.rownames = TRUE)[]
colnames(datt)[1] <- "x"
dat_long <- melt(datt, id.vars ="x" )
p <- plot_ly(dat_long, x= ~x, y= ~value, type = 'scatter', mode = 'lines markers', color = ~variable) %>% layout(dragmode="box", showlegend = FALSE)
Я заметил, что как для диаграммы рассеяния, так и для линейной диаграммы я могу использовать инструмент выбора поля, чтобы выделить интересующую точку. Я пытаюсь использовать это, чтобы создать связь между двумя графиками. Таким образом, если пользователь нажмет на определенную точку (или точки) на диаграмме рассеяния, то он увидит соответствующую линию (или линии) на линейной диаграмме.
Я знаком с Shiny и задаюсь вопросом, можно ли это использовать для обеспечения связи между графиками plotly. Например, если пользователь выделил определенную точку, я мог бы каким-то образом сохранить эту переменную как «пользовательский ввод», а затем заставить линейный график отображать этот новый ввод для создания его нового вывода (т. Е. Показывать соответствующую строку.
Возможно ли связать эти графики либо в R, либо в Shiny? И / или, возможно ли сохранить информацию о том, как пользователь взаимодействует с какими точками или линиями?
Спасибо за любой совет!
Комментарии:
1. С помощью Shiny вы можете использовать,
event_data()
как в этом примере