渲染Shinydashboard信息框...而无需Shinydashboard

age*_*nis 5 r infobox shiny shinydashboard

我在基于标准布局(fluidpage(),我无法更改)构建的Shiny应用程序上工作,我需要向用户显示一些反应性KPI,颜色,图标和文本取决于某些计算结果。此类信息的理想格式将是infoBox()来自Shinydashboard 的对象,如下所示:

在此处输入图片说明

当然,当我将此代码放到流畅的页面中时,它会松开其样式:

infoBox("Accuracy",  "50%",  icon = icon("ok", lib = "glyphicon"), color = "yellow")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我试过的

  • 在我的fluidpage应用程序内添加一个仪表板页面,该页面可以正常工作,但是我无法删除菜单,标题和其他周围的东西。

  • 尝试自定义文本输出,这不是很好: 在此处输入图片说明

  • 我不知道如何很好地添加glyphicon。

您有什么解决方案要实现吗?谢谢,

Flo*_*ian 6

您可以从AdminLTE复制 CSS并创建一个新的 css 文件。我复制了信息框组件和bg-yellow类的内容。请注意,为了使用其他颜色,您还必须复制相应的类,或者使用您自己的 css 为您的元素提供自定义颜色。

为了做一个工作示例,我包含了 CSS 内联。当然,更简洁的解决方案是创建一个单独的 CSS 文件。如果您不熟悉如何执行此操作,可以在此处找到说明。我希望这有帮助!

library(shiny)
library(shinydashboard)

ui <- shinyUI(fluidPage(
  tags$head(
    tags$style(HTML("/*
 * Component: Info Box
                    * -------------------
                    */
                    .info-box {
                    display: block;
                    min-height: 90px;
                    background: #fff;
                    width: 100%;
                    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
                    border-radius: 2px;
                    margin-bottom: 15px;
                    }
                    .info-box small {
                    font-size: 14px;
                    }
                    .info-box .progress {
                    background: rgba(0, 0, 0, 0.2);
                    margin: 5px -10px 5px -10px;
                    height: 2px;
                    }
                    .info-box .progress,
                    .info-box .progress .progress-bar {
                    border-radius: 0;
                    }
                    .info-box .progress .progress-bar {
                    background: #fff;
                    }
                    .info-box-icon {
                    border-top-left-radius: 2px;
                    border-top-right-radius: 0;
                    border-bottom-right-radius: 0;
                    border-bottom-left-radius: 2px;
                    display: block;
                    float: left;
                    height: 90px;
                    width: 90px;
                    text-align: center;
                    font-size: 45px;
                    line-height: 90px;
                    background: rgba(0, 0, 0, 0.2);
                    }
                    .info-box-icon > img {
                    max-width: 100%;
                    }
                    .info-box-content {
                    padding: 5px 10px;
                    margin-left: 90px;
                    }
                    .info-box-number {
                    display: block;
                    font-weight: bold;
                    font-size: 18px;
                    }
                    .progress-description,
                    .info-box-text {
                    display: block;
                    font-size: 14px;
                    white-space: nowrap;
                    overflow: hidden;
                    text-overflow: ellipsis;
                    }
                    .info-box-text {
                    text-transform: uppercase;
                    }
                    .info-box-more {
                    display: block;
                    }
                    .progress-description {
                    margin: 0;
                    }

                    .bg-yellow,
                    .callout.callout-warning,
                    .alert-warning,
                    .label-warning,
                    .modal-warning .modal-body {
                      background-color: #f39c12 !important;
                    }

                    "))
  ),

  headerPanel("New Application"),

  sidebarPanel(),

  mainPanel(
    infoBox("Accuracy",  "50%",  icon = icon("ok", lib = "glyphicon"), color = "yellow")
  )
)
)

server <- function(input,output,session)
{}

shinyApp(ui,server)
Run Code Online (Sandbox Code Playgroud)

  • 好的,干得好。对于颜色确实,它不允许其他*颜色名称*,但您可以将黑色定义为白色等...... (2认同)