【发布时间】:2019-10-16 08:41:10
【问题描述】:
【问题讨论】:
-
你用来生成这张表的代码是什么?请编辑您的帖子并包含代码。
【问题讨论】:
您可能使用过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'
)
【讨论】: