【发布时间】:2018-10-22 14:37:46
【问题描述】:
每当 R 在 Shiny 中(或仅在 R 中)创建 plotly 对象时,都会完全重新创建小部件。对于小型数据集,这不是问题,但我正在处理包含数千个散点的图,因此在我的 shinyapp 中重新创建图需要 10-20 秒。
我正在寻找一种通过 javascript 解决方案更新数据的方法,该解决方案不会触发小部件重建,而只是替换它的数据。
这是一个虚拟应用程序,其中包含 2 个小数据集,应用程序可以在这些数据集之间切换。 在虚拟应用程序中,它通过重新创建小部件来实现。由于数据点有限,这里的速度相当快,但对于海量数据集来说并不理想。
如果有人知道如何做到这一点,那将是对我的应用程序的重大改进。
澄清: 像这样的答案在这里:enter link description here 不会对我有用。关键是,在我的应用程序中,数据在绘图构建后多次更改,因此我无法预加载数据框列表。
我觉得解决方案必须是一个 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)
【问题讨论】:
标签: javascript r shiny plotly