Я хочу сделать взаимодействие между таблицей и графиком, используя R-Shiny и Plotly.
После щелчка по любой точке на графике: я хочу увеличить размер точки на графике, закрасить ее красным также в таблице, перенести соответствующую строку в верхнюю часть таблицы и выделить ее.
Аналогичным образом, после щелчка (одной) строки в таблице соответствующая точка на графике должна быть выделена красным цветом и иметь больший размер.
Поскольку мои данные большие, мне нужно сделать это на стороне подачи.
Мне удалось создать график, и в таблице ниже приведен мой код.
Файл ui.R:
ui <- fluidPage(
fluidPage(column(width = 6, plotlyOutput("volcanoplot", height = 350))),
fluidPage(DT::dataTableOutput("de_table"))
)
И файл server.R:
library("DT")
library(plotly)
library(shiny)
m <- mtcars[, c("mpg", "wt", "disp")] %>%
tibble::rownames_to_column()
function(input, output, session) {
shared_data <- SharedData$new(m, ~rowname)
output$volcanoplot <- renderPlotly({
pp <- shared_data %>% plot_ly(source = 'volcanoplot') %>%
add_trace(x = ~mpg, y = ~wt, type = 'scatter', mode = "markers")
})
# highlight selected rows in the table
output$de_table <- DT::renderDataTable({
dt <- DT::datatable(shared_data$data() , selection = 'single', rownames= FALSE)})
}
Я смог понять переменные щелчка и выбора таблицы как
click_detect = plotly::event_data('plotly_click', source = 'volcanoplot')
s <- input$de_table_rows_selected
Спасибо за помощь.