styleColorBar Center并根据Sign

时间:2015-11-04 12:22:14

标签: r datatable shiny dt

我希望创建条形图,当使用DT的datatable出现在列的单元格中间并向左或向右伸出时,取决于单元格中的值是正还是负。

我尝试使用函数styleColorBar并将参数backgroundPosition更改为'left''center'但是每次尝试时,条形图仍显示在单元格的右侧,总是走到左边。

我找不到R代码中的示例,但附上了可以在Excel上执行的操作的示例;颜色不是必要的,但如果包含这将是一个奖金。

enter image description here

1 个答案:

答案 0 :(得分:20)

您可以创建一个自定义styleColorBar函数,该函数使用CSS渐变(与原始styleColorBar相同)来制作您想要的条形图。

这是一个例子(抱歉为长行,添加新行会破坏CSS):

color_from_middle <- function (data, color1,color2) 
{
  max_val=max(abs(data))
  JS(sprintf("isNaN(parseFloat(value)) || value < 0 ? 'linear-gradient(90deg, transparent, transparent ' + (50 + value/%s * 50) + '%%, %s ' + (50 + value/%s * 50) + '%%,%s  50%%,transparent 50%%)': 'linear-gradient(90deg, transparent, transparent 50%%, %s 50%%, %s ' + (50 + value/%s * 50) + '%%, transparent ' + (50 + value/%s * 50) + '%%)'",
             max_val,color1,max_val,color1,color2,color2,max_val,max_val))
} 

使用一些测试数据:

data <- data.frame(a=c(rep("a",9)),value=c(-4,-3,-2,-1,0,1,2,3,4))

datatable(data) %>%
  formatStyle('value',
              background=color_from_middle(data$value,'red','blue'))

enter image description here