总的来说,我的目标是在灰色框中包含一组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) )
我进一步挖了一下,发现问题似乎仅限于plotOutput()
的重叠。例如,我尝试用plotOutput("graphMain"...)
替换dataTableOutput()
,问题就消失了。
我的问题是:有快速解决方法吗?我知道我可以通过添加一堆br()
来修复它,但我想避免这种情况。另外,如果有更好的方法将一组输入放在灰色框中,请告诉我!
答案 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))