R Shiny Datatable色单元基于值范围

问题描述 投票:-1回答:1

我有这个数据集:

test <- data.frame("type" = c("A", "B", "C", "D"), "goal" = c(3000,4500,250,2000),"Jan" = c(4000,2000,240,800), "Feb" = c(2000,3000,300,1500), "Mar" = c(2800,4000,100,1400) )

我想在我的闪亮应用程序中使用以下标准在彩色编码单元格中显示数据表:

绿色:低于目标Amber的60%:目标的60-80%红色:超过目标的80%

Desired Output

我在renderDatatable函数中使用了JSCallback选项,但它似乎需要单元格而不是实际数字。任何帮助将不胜感激!谢谢!

r shiny color-scheme dt
1个回答
0
投票

这是我可以用styleInterval提出的,但不确定你需要的可扩展性。

  • 我们首先根据目标与实际间隔的逻辑值
  • 用它来为细胞着色
#courtesy: https://stackoverflow.com/a/50950368/5086335

library(DT)

test <- data.frame("type" = c("A", "B", "C", "D"), "goal" = c(3000,4500,250,2000),"Jan" = c(4000,2000,240,800), "Feb" = c(2000,3000,300,1500), "Mar" = c(2800,4000,100,1400) )

# Green: Below 60% of goal Amber: 60-80% of goal Red: Above 80% of goal


test$jan_goal <- ifelse(test$Jan > test$goal * 0.8, 2,
                        ifelse(test$Jan < test$goal * 0.6, 0,
                               1))

test$feb_goal <- ifelse(test$Feb > test$goal * 0.8, 2,
                        ifelse(test$Feb < test$goal * 0.6, 0,
                               1))

test$mar_goal <- ifelse(test$Mar > test$goal * 0.8, 2,
                        ifelse(test$Mar < test$goal * 0.6, 0,
                               1))


      DT::datatable(
        test,
        rownames = FALSE,
        options = list(
          columnDefs = list(list(targets = c(5,6,7), visible = FALSE))
        )
      ) %>% 
        formatStyle(columns = "Jan",
                    valueColumns = "jan_goal",
                    backgroundColor = styleEqual(levels = c(0,1,2), values = c("#008000","#FFA500","#F00"))) %>% 
        formatStyle(columns = "Feb",
                    valueColumns = "feb_goal",
                    backgroundColor = styleEqual(levels = c(0,1,2), values = c("#008000","#FFA500","#F00"))) %>% 

        formatStyle(columns = "Mar",
                    valueColumns = "mar_goal",
                    backgroundColor = styleEqual(levels = c(0,1,2), values = c("#008000","#FFA500","#F00")))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.