sidebarPanel没有使用plotOutput

时间:2017-02-21 21:50:45

标签: r shiny

总的来说,我的目标是在灰色框中包含一组UI元素。它纯粹是一种审美的东西,我已经用sidebarPanel()来试图完成它。

shiny内使用sidebarPanel()时,我在mainPanel中遇到了有关我的用户界面布局的问题。看起来好像sidebarPanel()更改了页面上的绘图和其他UI元素之间的间距。我在下面列出了一个可重现的例子:

library(shiny)
library(ggplot2)

server <- function(input, output, session) {
  ###Outputting data exploration graph
  output$graphMain <- renderPlot({
    ggplot(data=mtcars) + geom_histogram(aes(x=hp))
  })
}

ui <- pageWithSidebar(
  headerPanel = NULL,sidebarPanel = NULL,
  mainPanel = mainPanel(
    tabsetPanel(
      type = "pills",
      tabPanel("My Panel",
               sidebarPanel(width=12 ####Problematic sidebarPanel
                            , checkboxInput(inputId="checkbox1",label="Check box 1")
               ), 
               plotOutput("graphMain", width = "95%") 
               ,checkboxInput(inputId="checkbox2",label="Check Box 2")
      )
    )
  )
)

shinyApp( ui = ui, server = server, options = list(launch.browser = T) )

下面显示了以红色圆圈突出显示的问题: enter image description here

我进一步挖了一下,发现问题似乎仅限于plotOutput()的重叠。例如,我尝试用plotOutput("graphMain"...)替换dataTableOutput(),问题就消失了。

我的问题是:有快速解决方法吗?我知道我可以通过添加一堆br()来修复它,但我想避免这种情况。另外,如果有更好的方法将一组输入放在灰色框中,请告诉我!

1 个答案:

答案 0 :(得分:1)

这对你有用吗?

server <- function(input, output, session) {
  ###Outputting data exploration graph
  output$graphMain <- renderPlot({
    ggplot(data=mtcars) + geom_histogram(aes(x=hp))
  })
}

ui <- pageWithSidebar(
  headerPanel = NULL,sidebarPanel = NULL,
  mainPanel = mainPanel(
    tabsetPanel(
      type = "pills",
      tabPanel("My Panel",
               sidebarPanel(width=12 ####Problematic sidebarPanel
                            , checkboxInput(inputId="checkbox1",label="Check box 1")
               ), 
               fluidRow(verticalLayout(plotOutput("graphMain", width = "95%") 
               ,checkboxInput(inputId="checkbox2",label="Check Box 2"))))
      )
    )
  )
)

shinyApp( ui = ui, server = server, options = list(launch.browser = T))