Каждый раз, когда R-объект создается плотно, (или просто в R), виджет воссоздается полностью. Для небольших наборов данных это не проблема, но я работаю с графиками, которые содержат тысячи точек разброса, поэтому требуется 10-20 секунд для воссоздания графика в моем shinyapp.
Я ищу способ обновления данных с помощью javascript-решения, которое не вызывает перестройку виджета, а просто заменяет его данные.
Вот фиктивное приложение с 2 маленькими наборами данных, между которыми приложение может переключаться.
В фиктивном приложении это происходит путем воссоздания виджета. Здесь достаточно быстро из-за ограниченных точек данных, но не идеально для массивных наборов данных.
Если кто-нибудь знает, как этого добиться, это станет серьезным улучшением для моего приложения.
ДЛЯ УТОЧНЕНИЯ:
Вот такой ответ: введите описание ссылки здесь не поможет мне. Дело в том, что в моем приложении данные менялись много раз ПОСЛЕ построения графика, поэтому я не могу предварительно загрузить список фреймов данных.
У меня есть ощущение, что решение должно было бы быть решением javascript, которое может захватывать данные для перезаписи текущих отображаемых данных, но не уверен, как или можно ли это сделать.
library("shiny")
library("plotly")
ui <- fluidPage(
selectInput("dataset", "Choose a dataset:", choices = c("rock", "mtcars")),
plotlyOutput("Plot1")
)
server <- function(input, output, session) {
dataSource <- reactive({switch(input$dataset,"rock" = rock,"mtcars" = mtcars)})
output$Plot1 <- renderPlotly({plot_ly(data = dataSource(), x = dataSource()[,1],
y =dataSource()[,2], mode = 'markers', type = 'scatter')})
}
shinyApp(ui, server)