Вы, вероятно, использовали styleColorBar
. С помощью этой функции полоса для ячейки, содержащей минимальное значение, имеет длину 0, поэтому вы получите ожидаемый результат. Чтобы иметь стержень с длиной, пропорциональной значению, вы можете использовать мою функцию styleColorBar2
, представленную ниже. Эта функция принимает два цвета, один для отрицательных значений, а другой для положительных значений.
library(DT)
modelData <- data.frame(Channel = c("A", "B", "C"),
Current = c(2000, 3000, 4000),
Modified = c(2500, 3500, 3000),
New_Membership = c(500, 500, -1000),
stringsAsFactors = FALSE)
styleColorBar2 <- function (data, color1, color2)
{
M <- max(abs(data), na.rm = TRUE)
js <- c(
"value <= 0 ? ",
sprintf("'linear-gradient(90deg, transparent ' + (1+value/%f) * 100 + '%%, %s ' + (1+value/%f) * 100 + '%%)'",
M, color1, M),
" : ",
sprintf("'linear-gradient(90deg, transparent ' + (1-value/%f) * 100 + '%%, %s ' + (1-value/%f) * 100 + '%%)'",
M, color2, M)
)
JS(js)
}
datatable(
modelData , selection = 'none', editable = TRUE
) %>% formatStyle(
'New_Membership',
background = styleColorBar2(modelData$New_Membership, "red", "lightblue"),
backgroundSize = '100% 50%',
backgroundRepeat = 'no-repeat',
backgroundPosition = 'center'
)