Контекст: блестящее приложение позволяет пользователю выбирать, отображать или нет таблицы и графики.
Проблема: Интерфейс пользователя сохраняет большой белый "заполнитель" пространства для графики, если они не отображаются (это поведение не требуется). Но когда дело доходит до таблиц, пользовательский интерфейс не отображает этот пустой пробел (ожидаемое поведение).
Вопрос: Как запретить Shiny хранить пустой заполнитель для графиков?
Предыдущие исследования: Этот вопрос уже задавался здесь , но ответ @ the-mad-statter не соответствует моим потребностям. Я хотел бы понять, почему Shiny имеет такое поведение и, если возможно, исправить его, не меняя пользовательский интерфейс.
Большое спасибо за вашу помощь! Ниже приведен воспроизводимый пример и несколько снимков экрана.
Воспроизводимый пример
library(shiny)
library(tidyverse)
# basic user interface
ui <- fluidPage(
checkboxGroupInput(inputId = "checkboxes", label = NULL ,choices = list("Plot"="plot", "Table"="table")),
plotOutput(outputId = "plotdf1"),
tableOutput(outputId = "tabledf"),
plotOutput(outputId = "plotdf2")
)
# server side calculations
server <- function(input, output, session) {
df = mtcars
output$plotdf1 = renderPlot({
if("plot"%in%input$checkboxes){
ggplot(data = df, aes(x = disp, y = qsec)) +
geom_line()
}
})
output$tabledf = renderTable({
if("table"%in%input$checkboxes){
df[1:5,]
}
})
output$plotdf2 = renderPlot({
if("plot"%in%input$checkboxes){
ggplot(data = df, aes(x = gear)) +
geom_bar()
}
})
}
shinyApp(ui,server)
Снимки экрана: Все объекты отображаются:
Когда таблица удаляется, пользовательский интерфейс «заполняет» / удаляет пустое пространство
Но при удалении графиков остается пустой заполнитель