如何使用格式 table 在 table 中组合格式化程序和 color_tile 函数

How to combine formatter and color_tile functions in a table using formattable

我需要制作一个带有 table 的报告,其中一列的背景和字体颜色取决于每一行的值。 当它们被隔离时,我成功地使用了格式化程序或 color_tile。但是我需要同时使用。

示例:

col1 <- c(2.0, 3.3,6.3,1.5)
col2 <- c(4.7, 4.3, 2.5,1.9)
mydata <- data.frame(col1, col2)

customGreen = "#0d6d36"
customGreen0 = "#DeF7E9"

使用下面的代码我可以设置第 2 列的字体颜色:

formattable(mydata, 
            align =c("l","c","c"),
            list(
              `col2` = formatter("span",style = x ~ style(color = ifelse(mydata$col2 >=3, "red","black")))
            )
)

使用下面的代码我可以设置第 2 列的背景颜色:

formattable(mydata, 
            align =c("l","c","c"),
            list(
              `col2` = color_tile(customGreen0, customGreen)
            )
)

但是我不能同时设置字体颜色和背景颜色。有什么想法吗?

尝试使用 formatter 函数定义您自己的格式化程序,并将背景颜色与字体颜色结合起来。

格式化程序
color_tile 效果由显示、填充、border-radius 和 background-color 定义。颜色设置了字体颜色的规则。

costum_format <- formatter(.tag = "span", style = function(x) style(
                                                   display = "block", 
                                                   padding = "0 4px", 
                                                   `border-radius` = "4px", 
                                                   `background-color` = csscolor(gradient(as.numeric(x), 
                                                                                          customGreen, customGreen0)),
                                                   color = ifelse(x >= 3, "red","black")))

使用costum函数

formattable(mydata, 
            align =c("l","c","c"),
            list(
              `col2` = costum_format))

输出