3

我想在同一行中显示 4 个 infoBoxes(或 valueBoxes,我真的不在乎),但它似乎不起作用......

这是代码的工作简化版本,基于 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 个信息框。但是,一旦我再添加一个 infoBox,它就会移动到新的一行:

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")),
    )
  )
)

我还尝试使用列 - 然后这些框显示在同一行上,但被扭曲了。

有任何想法吗?

4

3 回答 3

7

fluidRowfromshiny中,我们知道它的最大列宽为 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)

产量:

在此处输入图像描述

于 2015-12-28T13:30:20.093 回答
3

显然这就是我想要的:

在 server.R 中:设置宽度 = 3 的值框:

output$infoBox1 <- renderValueBox({..., valueBox(...,width = 3)})

在 UI.R 中:使用 valueBoxOutputs 放置 4 列,以这种方式:

column( 3,valueBoxOutput("infoBox1", width = 12))
于 2015-12-31T20:30:52.297 回答
0
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)

这似乎对我有用。我的应用程序有同样的问题。

于 2017-11-08T14:22:13.073 回答