如何使用formattable在表中合并formatter函数和color_tile函数

smdnsysy  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(127)

我需要制作一个报表,其中一个表的列将有一个背景和字体颜色取决于每一行的值。我成功地使用格式化程序或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)
            )
)

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

pqwbnv8z

pqwbnv8z1#

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

格式化程序

color_tile效果由显示、填充、边框半径和背景色定义,而color设置了字体颜色的规则。

custom_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")))

使用自定义函数

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

输出

相关问题