根据值为 kableExtra 中的单元格着色
Coloring cells in kableExtra based on value
我正在使用 R Markdown 创建一个 pdf 报告,并且有一个 table 的概率是这样的:
x <- data.frame(a = c(0.1, 0.2, 0.4), b = c(0.3, 0.5, 0.7), c = c(0.8, 0.9, 0.5))
> x
a b c
1 0.1 0.3 0.8
2 0.2 0.5 0.9
3 0.4 0.7 0.5
编织成pdf时,table是通过kable编织的,这样:
kable(x, format = 'latex', booktabs = T)
编织时让单元格按概率值着色的简单方法是什么?我看过类似的问题,但是 none 足以回答我的问题。
我的目标是获得大致如下所示的输出:
你可以在你的 knitr R 块中尝试这样的事情:
suppressPackageStartupMessages(invisible(
lapply(c("dplyr", "knitr", "kableExtra", "scales"),
require, character.only = TRUE)))
x <- data.frame(a = c(0.1, 0.2, 0.4),
b = c(0.3, 0.5, 0.7),
c = c(0.8, 0.9, 0.5))
xc <- seq(min(x), max(x), length.out = 10)
pal <- seq_gradient_pal("#e9f7cb", "#1b7378")(xc)
setSpec <- function(y){
kableExtra::cell_spec(y, "latex", background = pal[cut(y, breaks=xc, include.lowest = TRUE)])
}
apply(x, 2, setSpec) %>% knitr::kable("latex", escape = FALSE, booktabs = TRUE, linesep = "")
我正在使用 R Markdown 创建一个 pdf 报告,并且有一个 table 的概率是这样的:
x <- data.frame(a = c(0.1, 0.2, 0.4), b = c(0.3, 0.5, 0.7), c = c(0.8, 0.9, 0.5))
> x
a b c
1 0.1 0.3 0.8
2 0.2 0.5 0.9
3 0.4 0.7 0.5
编织成pdf时,table是通过kable编织的,这样:
kable(x, format = 'latex', booktabs = T)
编织时让单元格按概率值着色的简单方法是什么?我看过类似的问题,但是 none 足以回答我的问题。
我的目标是获得大致如下所示的输出:
你可以在你的 knitr R 块中尝试这样的事情:
suppressPackageStartupMessages(invisible(
lapply(c("dplyr", "knitr", "kableExtra", "scales"),
require, character.only = TRUE)))
x <- data.frame(a = c(0.1, 0.2, 0.4),
b = c(0.3, 0.5, 0.7),
c = c(0.8, 0.9, 0.5))
xc <- seq(min(x), max(x), length.out = 10)
pal <- seq_gradient_pal("#e9f7cb", "#1b7378")(xc)
setSpec <- function(y){
kableExtra::cell_spec(y, "latex", background = pal[cut(y, breaks=xc, include.lowest = TRUE)])
}
apply(x, 2, setSpec) %>% knitr::kable("latex", escape = FALSE, booktabs = TRUE, linesep = "")