styleColorBar Center and shift Left/Right 取决于 Sign

styleColorBar Center and shift Left/Right dependent on Sign

我希望创建使用 DT 时 datatable 出现在列的单元格中间并根据单元格中的值是正数还是负数向左或向右伸出的条形。

我尝试使用函数 styleColorBar 并将参数 backgroundPosition 更改为 'left''center' 但是每次尝试时,条形图仍然出现在单元格并始终向左移动。

我无法从 R 代码中找到示例,但附上了可以在 Excel 上完成的示例;颜色不是必需的,但如果包括那将是一个奖励。

您可以创建自定义 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'))