Я играю с shinyjs
pkg и различными вариантами скрытия / отображения пользовательского интерфейса.В приложении ниже я хочу показать выбранные графики и, если ни один вариант не выбран, отобразить пустое пространство.Я использую toggle()
, который делает трюк, пока выбран хотя бы один параметр в checkboxGroupInput
, но когда не выбран ни один параметр, отображаются оба графика.Согласно документации :
Если условие задано для переключения, это условие будет использоваться для определения, показывать или скрывать элемент.Элемент будет показан, если условие оценивается как ИСТИНА и скрыт в противном случае.
Я что-то упускаю здесь очевидное?
library(shiny)
library(shinyjs)
library(ggplot2)
ui <-dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
useShinyjs(),
checkboxGroupInput(inputId = 'options',
label = 'Choose your plot(s)',
choices = list("Plot 1" = 1,
"Plot2" = 2)),
#selected = 1:2),
verbatimTextOutput('checkbox_text'),
uiOutput("Ui1"),
uiOutput('Ui2')
)
)
server <- function(input, output, session) {
output$checkbox_text <- renderText({
paste(input$options)
})
observe({
shinyjs::toggle(id = "Ui1", condition = input$options == 1)
shinyjs::toggle(id = "Ui2", condition = input$options == 2)
})
output$Ui1 <- renderUI({
output$plot1 <- renderPlot({
p <- ggplot(mtcars, aes(disp, mpg)) +
geom_point() +
geom_smooth() +
ggtitle('Plot 1')
p
})
plotOutput('plot1')
})
output$Ui2 <- renderUI({
output$plot2 <- renderPlot({
p<- ggplot(mtcars, aes(disp, mpg, colour = as.factor(cyl))) +
geom_point() +
ggtitle('Plot 2')
p
})
plotOutput('plot2')
})
}
shinyApp(ui, server)