styleColorBar:颜色条的大小与列

时间:2017-06-12 16:09:33

标签: r datatable dt

使用styleColorBar,如何使颜色条的大小与列的绝对值成比例?与此相反,在下面的示例中,查看cyl列,红色条对于更大的值更大。

代码:

data <- head(mtcars[,1:4])
data[,2] <- -data[,2]
data
out <- datatable(data, rownames = FALSE) %>%
  formatStyle('mpg',
              background = styleColorBar(data$mpg, 'lightblue'),
              backgroundSize = '95% 50%',
              backgroundRepeat = 'no-repeat',
              backgroundPosition = 'right') %>%
  formatStyle('cyl',
              background = styleColorBar(data$cyl, 'red'),
              backgroundSize = '95% 50%',
              backgroundRepeat = 'no-repeat',
              backgroundPosition = 'right')
out

结果: enter image description here 我知道已经回答了非常类似的问题herethere

但这两个例子似乎比我的更复杂。前者处理基于另一列格式化列。后者的颜色条的方向取决于符号。我认为对我来说也许存在一个更简单的伎俩...

谢谢

2 个答案:

答案 0 :(得分:3)

以下是一种骇人听闻的方式:styleColorBar生成一些JavaScript,您可以用value替换Math.abs(value)。为了获得正确的限制,我还采用了abs(data$cyl)

library(DT)
data <- head(mtcars[,1:4])
data[,2] <- -data[,2]
data
out <- datatable(data, rownames = FALSE) %>%
  formatStyle('mpg',
              background = styleColorBar(data$mpg, 'lightblue'),
              backgroundSize = '95% 50%',
              backgroundRepeat = 'no-repeat',
              backgroundPosition = 'right') %>%
  formatStyle('cyl',
              background = gsub(
                "value", "Math.abs(value)", 
                styleColorBar(abs(data$cyl), 'red'),
                fixed=T),
              backgroundSize = '95% 50%',
              backgroundRepeat = 'no-repeat',
              backgroundPosition = 'right')
out

enter image description here

答案 1 :(得分:0)

尝试一下:

background = styleColorBar(c(0,data $ mpg),'lightblue'),

它在我闪亮的应用程序上有效。它只是将数据限制为0,从而解决了该问题。