首页 > 解决方案 > 自定义 styleColorBar 根据带有阴影阈值的符号左右移动

问题描述

如果数字<用户定义的阈值(例如-5),我想突出显示红色,如果数字>另一个用户定义的阈值(例如+5),我想突出显示绿色。否则,它是灰色的。任何帮助是极大的赞赏!谢谢你。

它类似于这个问题,但不一样。 styleColorBar 居中并左移/右移取决于符号

测试数据

data <- data.frame(a=c(rep("a",10)),value=c(-8,-7,-2,-3,0,6,2, 7,3,4))

标签: javascriptrshinydatatable

解决方案


尝试:

color_from_middle <- function (data,low,high, colorlow,colorhigh,colordefault) 
{
  max_val=max(abs(data))
  JS(sprintf("isNaN(parseFloat(value)) || 
              value < %s ? 'linear-gradient(90deg, transparent, transparent ' + (50 + value/%s * 50) + '%%, %s ' + (50 + value/%s * 50) + '%%,%s  50%%,transparent 50%%)' :
              value > %s ? 'linear-gradient(90deg, transparent, transparent 50%%, %s 50%%, %s ' + (50 + value/%s * 50) + '%%, transparent ' + (50 + value/%s * 50) + '%%)':
              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) + '%%)'",
             low,max_val,colorlow,max_val,colorlow,high,colorhigh,colorhigh,max_val,max_val,max_val,colordefault,max_val,colordefault,colordefault,colordefault,max_val,max_val))
}

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

这依赖于 JavaScript条件运算符condition ? true : false

在此处输入图像描述


推荐阅读