R 防止用户界面中出现占位符空间

R 防止用户界面中出现占位符空间,r,shiny,R,Shiny,我正在编写一个闪亮的应用程序,其中有一个复选框组作为输入和输出,将有相同数量的类似于图的选项 勾选选项1将显示绘图1 勾选选项2将显示绘图2 勾选选项3将显示绘图3 但当我只勾选选项2和3时,输出区域将留有一些空间,勾选选项1时,将显示绘图1。还有这个我不想要的白色区域。其余的地块应该被取消 如何防止输出区域中出现空白? 我想我必须在ui主面板区域进行一些编码,但我没有发现任何东西。 所以我希望你能帮我解决这个问题。非常感谢 我的app.R代码示例: fluidPage( si

我正在编写一个闪亮的应用程序,其中有一个复选框组作为输入和输出,将有相同数量的类似于图的选项

  • 勾选选项1将显示绘图1
  • 勾选选项2将显示绘图2
  • 勾选选项3将显示绘图3
但当我只勾选选项2和3时,输出区域将留有一些空间,勾选选项1时,将显示绘图1。还有这个我不想要的白色区域。其余的地块应该被取消

如何防止输出区域中出现空白? 我想我必须在ui主面板区域进行一些编码,但我没有发现任何东西。 所以我希望你能帮我解决这个问题。非常感谢

我的app.R代码示例:

fluidPage(
    
  sidebarLayout(

    sidebarPanel(

       # Group of checkboxes
       checkboxGroupInput("checkGroup", label = h3("Checkbox group"), 
         choices = list("Choice 1" = 1, "Choice 2" = 2, "Choice 3" = 3),
         selected = 1)

    ),

    mainPanel(

      # Must I do here my codeing to prevent the (white) placeholder for the not shown plot?
      plotOutput("plot_Choice1"),
      plotOutput("plot_Choice2"),
      plotOutput("plot_Choice3")

   )
 ) 
)

server <- function(input, output) {

    # Rendering the first plot
    output$plot_Choice1=renderPlot({
        req(input$checkGroup)
        if (any(input$checkGroup == 1)) {
            plot(1:10,main="Plot for choice 1")
        }
    })

    # Rendering the second plot
    output$plot_Choice2=renderPlot({
        req(input$checkGroup)
        if (any(input$checkGroup == 2)) {
        plot(10:20,main="Plot for choice 2")
        }
    })

    # Rendering the third plot
    output$plot_Choice3=renderPlot({
        req(input$checkGroup)
        if (any(input$checkGroup == 3)) {
        plot(20:30,main="Plot for choice 3")
        }
    })



}

# Create Shiny app ----
shinyApp(ui = ui, server = server)
fluidPage(
侧边栏布局(
侧栏面板(
#复选框组
checkboxGroupInput(“checkGroup”,标签=h3(“Checkbox group”),
选项=列表(“选项1”=1,“选项2”=2,“选项3”=3),
所选参数=1)
),
主面板(
#我必须在这里编码以防止未显示绘图的(白色)占位符吗?
绘图输出(“绘图选项1”),
绘图输出(“绘图选择2”),
绘图输出(“绘图选择3”)
)
) 
)

服务器您可以使用
conditionalPanel
来“隐藏”输出(注意,条件不是R代码):

ui
ui <- fluidPage(
  
  sidebarLayout(
    
    sidebarPanel(
      
      # Group of checkboxes
      checkboxGroupInput("checkGroup", label = h3("Checkbox group"), 
                         choices = list("Choice 1" = 1, "Choice 2" = 2, "Choice 3" = 3),
                         selected = 1)
      
    ),
    
    mainPanel(
      conditionalPanel("input.checkGroup.includes('1')", plotOutput("plot_Choice1")),
      conditionalPanel("input.checkGroup.includes('2')", plotOutput("plot_Choice2")),
      conditionalPanel("input.checkGroup.includes('3')", plotOutput("plot_Choice3"))
    )
  ) 
)

server <- function(input, output) {
  
  # Rendering the first plot
  output$plot_Choice1=renderPlot({
    req(input$checkGroup)
    if (any(input$checkGroup == "1")) {
      plot(1:10, main = "Plot for choice 1")
    }
  })
  
  # Rendering the second plot
  output$plot_Choice2=renderPlot({
    req(input$checkGroup)
    if (any(input$checkGroup == "2")) {
      plot(10:20, main = "Plot for choice 2")
    }
  })
  
  # Rendering the third plot
  output$plot_Choice3=renderPlot({
    req(input$checkGroup)
    if (any(input$checkGroup == "3")) {
      plot(20:30, main = "Plot for choice 3")
    }
  })
  
  
  
}

# Create Shiny app ----
shinyApp(ui = ui, server = server)