Довольно простая проблема ... Я получаю сообщение об ошибке Error: unable to start png() device
при попытке преобразовать график в невидимое div
(см. Пример ниже).
Я пытался приблизиться кпроблема, создав блестящий модуль, но не уверен, что решит основную проблему.
Я еще не пробовал shinyjs
(круто, если это решение, но я бы предпочел избежать зависимости от пакета, если это возможно).
Как sidenote, я бы хотелизбегайте рендеринга в видимый элемент вне экрана / в низком z-порядке, чтобы лучше понять, как блестяще справляется со скрытыми элементами. Обратите внимание, что фактический график основан на реактивном содержимом, которое может изменяться, пока контейнер div
скрыт, и полученный график должен быть интерактивным (кисть / зависание / и т. Д.).
Обновление : я установил пакет Cairo
как попытку решения и теперь получаю сообщение об ошибке Error: Failed to create Cairo backend
(также пытался напрямую вызывать png()
и Cairo()
в блоке obeserve({})
, без какого-либо другого эффекта).
RepEx:
require(tidyverse)
require(shiny)
a_plot <- tibble(x=1:10,y=rnorm(10)) %>% ggplot(aes(x=x,y=y)) + geom_point()
server <- function(input, session, output) {
output$p1 <- renderPlot({a_plot})
output$p2 <- renderPlot({a_plot})
outputOptions(output,’p2’, suspendWhenHidden=FALSE)
}
ui <- fluidPage(
fluidRow(plotOutput(‘p1’)),
fluidRow(div(id=‘plot_container’, style=‘display: none’, plotOutput(‘p2’))),
withTags(head(script(HTML(‘window.onmouseover = function(event) {document.getElementById(“plot_container”).style.display = “block” }’))))
)
shinyApp(ui=ui, server=server)
Ожидаемый результат:
При наведении курсора на веб-страницу появляются два графика.
Environment
R 3.6.0
на Windows 10