ShinyDashboard - 在同一行显示 3 个以上的信息框
ShinyDashboard - displaying more than 3 infoBoxes on the same row
我想在同一行显示 4 个信息框(或值框,我不太在意),但它似乎不起作用...
这是代码的工作简化版本,基于 Rstudio wesite 上的 shinydashbaord 教程(我使用的是 infoBoxOutputs,但我想这里的格式无关紧要):
ui <- dashboardPage(
dashboardHeader(title = "Info boxes"),
dashboardSidebar(),
dashboardBody(
# infoBoxes with fill=FALSE
fluidRow(
infoBox("1st", 10 * 2, icon = icon("credit-card")),
infoBox("2nd", 10 * 2, icon = icon("credit-card")),
infoBox("3rd", 10 * 2, icon = icon("credit-card")),
)
)
)
在同一行显示 3 个信息框。但是,一旦我再添加一个信息框,它就会移到新的一行:
ui <- dashboardPage(
dashboardHeader(title = "Info boxes"),
dashboardSidebar(),
dashboardBody(
# infoBoxes with fill=FALSE
fluidRow(
infoBox("1st", 10 * 2, icon = icon("credit-card")),
infoBox("2nd", 10 * 2, icon = icon("credit-card")),
infoBox("3rd", 10 * 2, icon = icon("credit-card")),
infoBox("4th", 10 * 2, icon = icon("credit-card")),
)
)
)
我也尝试过使用列 - 这些框随后显示在同一行,但被扭曲了。
有什么想法吗?
在 shiny
的 fluidRow
中,我们知道它的最大列宽为 12。
查看 infoxBox
函数:
infoBox(title, value = NULL, subtitle = NULL,
icon = shiny::icon("bar-chart"), color = "aqua", width = 4,
href = NULL, fill = FALSE)
}
我们看到宽度的设置是width = 4
。
要将所需的 4 个信息框安装在一行中,只需设置 width = 3
。
所有意图和目的的明确示例:
library(shiny)
library(shinydashboard)
server <- function(input, output) {
}
ui <- fluidPage(
fluidRow(
infoBox("test", value=1, width=3),
infoBox("test", value=2, width=3),
infoBox("test", value=3, width=3),
infoBox("test", value=4, width=3)
)
)
shinyApp(ui = ui, server = server)
产量:
显然这就是我要找的:
在 server.R 中:
设置宽度为 3 的值框:
output$infoBox1 <- renderValueBox({..., valueBox(...,width = 3)})
在 UI.R 中:
以这种方式将 4 列与 valueBoxOutputs 放在一起:
column( 3,valueBoxOutput("infoBox1", width = 12))
library(shiny)
library(shinydashboard)
server <- function(input, output) {
}
ui <- fluidPage(
fluidPage( ##Change for fluidPage
mainPanel(width = 12, ##HERE
infoBox("test", value=1, width=3),
infoBox("test", value=2, width=3),
infoBox("test", value=3, width=3),
infoBox("test", value=4, width=3)
)
)
shinyApp(ui = ui, server = server)
这似乎对我有用。我的应用程序有同样的问题。
我想在同一行显示 4 个信息框(或值框,我不太在意),但它似乎不起作用...
这是代码的工作简化版本,基于 Rstudio wesite 上的 shinydashbaord 教程(我使用的是 infoBoxOutputs,但我想这里的格式无关紧要):
ui <- dashboardPage(
dashboardHeader(title = "Info boxes"),
dashboardSidebar(),
dashboardBody(
# infoBoxes with fill=FALSE
fluidRow(
infoBox("1st", 10 * 2, icon = icon("credit-card")),
infoBox("2nd", 10 * 2, icon = icon("credit-card")),
infoBox("3rd", 10 * 2, icon = icon("credit-card")),
)
)
)
在同一行显示 3 个信息框。但是,一旦我再添加一个信息框,它就会移到新的一行:
ui <- dashboardPage(
dashboardHeader(title = "Info boxes"),
dashboardSidebar(),
dashboardBody(
# infoBoxes with fill=FALSE
fluidRow(
infoBox("1st", 10 * 2, icon = icon("credit-card")),
infoBox("2nd", 10 * 2, icon = icon("credit-card")),
infoBox("3rd", 10 * 2, icon = icon("credit-card")),
infoBox("4th", 10 * 2, icon = icon("credit-card")),
)
)
)
我也尝试过使用列 - 这些框随后显示在同一行,但被扭曲了。
有什么想法吗?
在 shiny
的 fluidRow
中,我们知道它的最大列宽为 12。
查看 infoxBox
函数:
infoBox(title, value = NULL, subtitle = NULL,
icon = shiny::icon("bar-chart"), color = "aqua", width = 4,
href = NULL, fill = FALSE)
}
我们看到宽度的设置是width = 4
。
要将所需的 4 个信息框安装在一行中,只需设置 width = 3
。
所有意图和目的的明确示例:
library(shiny)
library(shinydashboard)
server <- function(input, output) {
}
ui <- fluidPage(
fluidRow(
infoBox("test", value=1, width=3),
infoBox("test", value=2, width=3),
infoBox("test", value=3, width=3),
infoBox("test", value=4, width=3)
)
)
shinyApp(ui = ui, server = server)
产量:
显然这就是我要找的:
在 server.R 中: 设置宽度为 3 的值框:
output$infoBox1 <- renderValueBox({..., valueBox(...,width = 3)})
在 UI.R 中: 以这种方式将 4 列与 valueBoxOutputs 放在一起:
column( 3,valueBoxOutput("infoBox1", width = 12))
library(shiny)
library(shinydashboard)
server <- function(input, output) {
}
ui <- fluidPage(
fluidPage( ##Change for fluidPage
mainPanel(width = 12, ##HERE
infoBox("test", value=1, width=3),
infoBox("test", value=2, width=3),
infoBox("test", value=3, width=3),
infoBox("test", value=4, width=3)
)
)
shinyApp(ui = ui, server = server)
这似乎对我有用。我的应用程序有同样的问题。