2015-11-04 20 views
7

我正在寻找创建当使用DT的datatable出现在列的单元格中间并向左或向右伸出取决于单元格中的值是否为正值或否定的。styleColorBar中心和移位左/右依赖于登录

我已经使用功能styleColorBar和修改参数backgroundPosition试图'left''center'但是每个试条仍然出现在单元格的权利,总是向左走。

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

enter image description here

+1

这是一个有趣问题,但它缺乏提供方式的努力。请添加一个可重复的示例。你可以在你使用'backgroundPosition ='left''的地方添加一个最小的例子,以便人们可以使用它并尝试找到解决方案。一个人(包括我自己)会花时间编写产生这里描述的情况的代码,然后试图找到一个解决方案,这是非常不可能的...... – LyzandeR

+0

我明白我写的东西不容易理解;已经重写它,所以读得更好一点。可能还不是很好,但希望比以前更有意义! –

回答

14

你可以做的是使用CSS梯度(原来一样styleColorBar)做出你想要的那种酒吧自定义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

+0

非常感谢,即使是多栏也能完美工作! –