#r #plot #shiny #rstudio #reactive
Вопрос:
У меня есть блестящее приложение с компонентом вывода графика:
plotOutput("plot_data")
Используя библиотеку vis_dat, я записываю в plot_data следующее:
observeEvent(input$missing, { # Click the Missing actionButton
v$plot_data <- vis_miss(new_data())
})
и…
output$plot_data <- renderPlot({
if (is.null(v$plot_data)) return()
v$plot_data
})
Это прекрасно работает. Теперь я также (пытаюсь) написать в тот же компонент, используя функцию pairs (), вот так:
observeEvent(input$pairs, { # Click the Pairs actionButton
v$plot_data <- pairs(new_data())
})
Я использую тот же вызов reactive output$plot_data, как показано ранее, но на этот раз вывод pairs() записывает график на панель построения RStudio вместо блестящего пользовательского интерфейса. Я видел это и с другими типами сюжетов. Есть идеи, почему это может быть?
Ответ №1:
Функции построения графиков в R, такие как hist()
, plot()
, и pairs()
визуализация изображений, а не графиков. Поэтому я использовал renderImage()
функцию следующим образом:
output$image_data <- renderImage({
width <- session$clientData$output_image_data_width
height <- session$clientData$output_image_data_height
outfile <- tempfile(fileext='.png')
png(outfile, width=width, height=height)
plot(new_data(), pch=20 , cex=1.5 , col="#69b3a2")
dev.off()
list(
src = outfile,
width = width,
height = height
)
},
deleteFile = TRUE
)
В RStudio все это выглядит как графики, но отдача не одинакова.