【问题标题】:(R) Edit Gradient Color of Cells Behind Multiple Columns of Data In Data Table(R) 编辑数据表中多列数据后面单元格的渐变颜色
【发布时间】:2020-06-27 14:57:34
【问题描述】:

几天前我问了一个类似的问题,并通过与一些人交谈取得了一些进展,但我需要更多帮助才能达到我想要的程度。所以这就是我所在的位置:

我想要一个具有一定大小的数据表,其中包含数据列(不同的比例),并且能够将颜色范围(有点像热图)应用于数据表单元格中的值,具体取决于列中的值有多大或多小。

这是提供给我的一些代码:

library(DT)
testrun <- round(runif(100), 6)

data <- data.frame(testrun = testrun)
brks <- quantile(data$testrun, probs = seq(.05, .95, .01), na.rm = TRUE) 

clrs_df <- colorRamp(c("white","blue"))(c(0,brks))  %>%
  as_tibble(.name_repair ="minimal") %>%
  setNames(nm=c("r","g","b")) %>%
  mutate_all(~as.character(round(.,digits=0)))  %>%
 mutate(mycolor=paste0("rgb(",paste(r,g,b,sep = ","),")"))

 clrs <- pull(clrs_df,mycolor)
 DT::datatable(data,rownames=TRUE,options = list(lengthChange = FALSE, dom='t')) %>%
      formatStyle(colnames(data), backgroundColor = styleInterval(brks, clrs))

上面的示例适用于一列数据,但我打算拥有多列数据,我希望这些颜色渐变分别应用于每一列。

我尝试在代码的赋值部分和 brks 赋值行中用 mtcars 代替 testrun,但它只给我留下了一个没有应用颜色的表格。

有人可以帮我指出正确的方向吗?任何帮助将不胜感激!

谢谢!

【问题讨论】:

    标签: r colors gradient dt


    【解决方案1】:

    我想你想要:

    library(DT)
    data <- data.frame(
      C1 = rnorm(100),
      C2 = rgamma(100, 10, 10)
    )
    
    dtable <- datatable(data, rownames=TRUE, options = list(lengthChange = FALSE, dom='t'))
    
    colRamp <- colorRamp(c("white","blue"))
    for(column in names(data)){
      x <- na.omit(data[[column]])
      brks <- quantile(x, probs = seq(.05, .95, .01))
      RGB <- colRamp(c(0, (brks-min(x))/(max(x)-min(x))))
      clrs <- apply(RGB, 1, function(rgb){
        sprintf("rgb(%s)", toString(round(rgb,0)))
      })
      dtable <- dtable %>% 
        formatStyle(column, backgroundColor = styleInterval(brks, clrs))
    }
    
    dtable
    

    【讨论】:

    • 我可以吻你!谢谢!
    猜你喜欢
    • 2020-10-13
    • 2021-10-20
    • 2019-01-28
    • 2023-03-09
    • 2022-06-10
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多