Может быть, вы хотите попробовать макет на основе столбцов.Очень хорошее объяснение можно найти здесь .Этот пример объединяет column
с box
, где вы можете определить ширину для каждого объекта.
Я также переключился на DT
таблицы, так как я нахожу их более мощными и простыми в стиле, например options = list(scrollX = TRUE, pageLength = 12)
, который хорошо отображает таблицу и добавляет к ней скроллер.Если вы удалите эту опцию, таблица и график будут перекрываться.
library(shiny)
library(shinydashboard)
library(DT)
ui = dashboardPage(
dashboardHeader(),
dashboardSidebar(
sliderInput("obs", "Number of observations:", min = 0, max = 1000, value = 500),
sliderInput("obs1", "Number of observations:", min = 0, max = 1000, value = 500),
sliderInput("obs2", "Number of observations:", min = 0, max = 1000, value = 500)
),
dashboardBody(
column(width = 12,
box(width = 3, DT::dataTableOutput('table1'),
DT::dataTableOutput('table2')),
box(width = 9, plotOutput("plot2"),
plotOutput("plot1"))
)
)
)
server = function(input, output) {
output$table1 <- DT::renderDataTable({
datatable(mtcars, caption = "table1",
options = list(scrollX = TRUE,
pageLength = 12))
})
output$table2 <- DT::renderDataTable({
datatable(mtcars[,1:3], caption = "table2")
})
output$plot1 <- renderPlot({
plot(mtcars$mpg, mtcars$cyl, main = "plot1")
})
output$plot2 <- renderPlot( {
plot(mtcars$mpg, mtcars$cyl, main = "plot2")
})
}
shinyApp(ui, server)