В одном из моих приложений отображается ggplot через uiOutput('plot.ui')
, а plot.ui отображается через renderUI()
.laggy Shiny uiOutput
output$plot.ui=renderUI({
plotOutput('plot', width=a function(), height=a function())
})
Код работает, но он очень лаги. Кажется, что это двухэтапный процесс. В моем приложении он сначала отображает «график» (который является ggplot, отображаемым renderPlot), затем он изменяет размер сюжета в соответствии с указанной шириной и высотой. Задержка между двумя шагами значительна (около 3 секунд). Я проверил его, обернув withProgress() вокруг plotOutput(), и проблема все еще существует. Мне интересно, почему эта проблема существует, и если есть какой-либо способ ее решения.
Приведенный небольшой пример прилагается для иллюстрации этой проблемы.
library(shiny)
shinyApp(
ui=shinyUI(
pageWithSidebar(
titlePanel('test'),
sidebarPanel(
sliderInput('width','Width: ', min=0,max=1000,value=100),
sliderInput('height','Height: ', min=0,max=1000,value=100)
),
mainPanel(uiOutput('plot.ui'))
)
),
server=function(input,output){
output$plot.ui=renderUI({
plotOutput('plot',width=input$width,height=input$height)
})
output$plot=renderPlot({
plot(runif(100000,1,100),runif(100000,1,100))
})
}
)
Большое спасибо за помощь!
Это не блестящий ... просто запущенный 'plot (runif (100000,1,100), runif (100000,1,100))' занимает секунду или два на моей машине. Это много точек для сюжета. – cory