如何使用格式 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))
输出
我需要制作一个带有 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))
输出