【问题标题】:How to change a color of an icon in Valuebox (flexdashboard)如何更改 Valuebox 中图标的颜色(flexdashboard)
【发布时间】:2021-05-06 08:10:33
【问题描述】:

我正在 Rmd Flexdashboard(不是 Shiny)中创建 KPI,并希望根据规则更改 Valuebox 中图标的颜色:

  • 如果值大于 0,则绿色箭头向上
  • 如果值小于 0 红色向下箭头

我已经弄清楚了规则,但我不知道如何更改颜色(tags$i 不起作用)。非常感谢任何帮助。

valueBox(rule,  
         "Title + subtitle",
         icon = ifelse(rule >= 0, "fa-angle-up", "fa-angle-down"),
         color = "white")

【问题讨论】:

  • 错误提示:无效颜色:有效颜色为:红色、黄色、水绿色、蓝色、浅蓝色、绿色、海军蓝、蓝绿色、橄榄色、石灰、橙色、紫红色、紫色、栗色、黑色.
  • 盒子颜色很好,虽然没有列出,但白色的工作。我说的是默认情况下为灰色的图标颜色。我想将其更改为绿色表示值 > 0,红色表示值

标签: r r-markdown flexdashboard


【解决方案1】:

迟到的答案,以防你还没有弄清楚:

您可以使用 css 更改颜色。创建一个 .css 文件。您可能必须将其保存在同一目录中名为 www 的文件夹中。更多信息在这里:https://shiny.rstudio.com/articles/css.html。我在我的例子中做到了这一点。 如果您右键单击箭头并选择inspect element,您将找到您所追求的样式的名称。在那里你可以测试不同的颜色。

您可以在上图中看到您所追求的样式称为.value-box .icon i。在图像的右上角,您会看到图标的类型。然后你将这个样式和你选择的颜色添加到你新创建的 .css 中,如下所示:

/*arrow down*/
.value-box .icon i.fa.fa-angle-down{
    
    color: rgb(255, 0, 0); /*red*/
  
}
 
/*arrow up*/    
.value-box .icon i.fa.fa-angle-up{
  
    color: rgb(0, 153, 0); /*green*/
  
}

在标题中添加 .css 文件的路径:

---
title: "Untitled"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    css: www/styles.css 

---

结果如下:

#arrow down
library(flexdashboard)
rule = -3
valueBox(rule,  
         "Title + subtitle",
         icon = ifelse(rule >= 0, "fa-angle-up", "fa-angle-down"),
         color = "white")

向上箭头:

library(flexdashboard)
rule = 3
valueBox(rule,  
         "Title + subtitle",
         icon = ifelse(rule >= 0, "fa-angle-up", "fa-angle-down"),
         color = "white")

【讨论】:

  • 您好,非常感谢。我认为这是获得它的最佳解决方案,谢谢!
【解决方案2】:

这是一个简单的shiny 应用程序,正值显示绿色向上箭头,否则显示红色向下箭头。

color = "white" 出现错误,因此我使用color = "black" 作为valueBox 的颜色。

library(shinydashboard)
library(shiny)

rule <- -100

up <- tags$i(
  class = "fa fa-angle-up", 
  style = "color: green"
)

down <- tags$i(
  class = "fa fa-angle-down", 
  style = "color: red"
)
ui <- dashboardPage(
  dashboardHeader(title = "Value boxes"),
  dashboardSidebar(),
  dashboardBody(
    fluidRow(
      # A static valueBox
      valueBox(rule, 
               "Title + subtitle", 
               icon = if(rule > 0) up else down, 
               color = 'black')
      ),
    )
)

server <- function(input, output) {
}

shinyApp(ui, server)

正值:

rule <- 100

【讨论】:

  • 嗨,谢谢,我不想改变盒子的颜色,只改变图标的​​颜色(盒子总是白色的),图片附在主线程上。
  • 再次感谢,但标签在 flexdashboard 中不起作用(不闪亮),我收到一个错误:找不到对象“标签”。这就是我努力寻找解决方案的原因。
猜你喜欢
  • 2021-11-08
  • 2017-11-02
  • 2019-09-04
  • 2021-07-01
  • 2020-04-04
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
相关资源
最近更新 更多