Ниже приведен пример кода из приложения для генерации графика и рендеринга в пользовательский интерфейс.
library(shiny)
ui <- fluidPage(
selectInput("choice", "Choose", choices = names(mtcars)),
actionButton("run", "Run"),
plotOutput("some_ui")
)
server <- function(input, output, session) {
output$some_ui <- renderPlot({
if(input$run==0) return()
withProgress(message = paste("Drawing heatmap, please wait."),{
heatmap_render(x,y) ##custom function to generate plot###
})
})
}
Это не рабочий пример, поскольку он включает в себя пользовательскую функцию для создания графика. Этот подход работает.
Однако мне нужно будет отобразить график по умолчанию при запуске приложения и до нажатия кнопки действия. Я попробовал несколько подходов.
ui <- fluidPage(
selectInput("choice", "Choose", choices = names(mtcars)),
actionButton("run", "Run"),
plotOutput("some_ui")
)
server <- function(input, output, session) {
output$some_ui <- renderUI({
if(input$run == 0)return()
list(src = "www/heatmap.png")
})
output$some_ui <- renderPlot({
if(input$run == 0) return()
withProgress(message = paste("Drawing heatmap, please wait."),{
heatmap_render(x,y) ##custom function to generate plot###
})
})
}
Это не отображало график по умолчанию, но работает нормально, когда нажата кнопка действия.
Пример 2: изменено plotOutput
на uiOutput
.
ui <- fluidPage(
selectInput("choice", "Choose", choices = names(mtcars)),
actionButton("run", "Run"),
uiOutput("some_ui")
)
server <- function(input, output, session) {
output$some_ui <- renderUI({
if(input$run==0)return()
list(src = "/www/heatmap.png")
})
output$some_ui <- renderPlot({
if(input$run == 0) return()
withProgress(message = paste("Drawing heatmap, please wait."),{
heatmap_render(x,y) ##custom function to generate plot###
})
})
}
Это дает ошибку Error in pngfun: invalid quartz() device size
при срабатывании actionButton. И изображение по умолчанию ("www/heatap.png") не отображается.
Также использование renderImage
в подходе 2 приводит к той же ошибке Error in pngfun: invalid quartz() device size
, когда срабатывает actionButton. И изображение по умолчанию ("www/heatap.png") не отображается.
output$some_ui <- renderImage({
if(input$run==0)return()
list(src = "www/heatmap.png", contentType = 'image/png')
}, deleteFile = FALSE)
Любая помощь для отображения графика по умолчанию при запуске приложения?