2015-11-04 21 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

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