是否可以通过不同表中给出的颜色对表(使用huxtable生成)进行颜色编码?
head_mtcars <- head(mtcars)
tbl_A <- as_hux(head_mtcars[1:2])
tbl_B <- as_hux(head_mtcars[3:4])
1)首先,我想为tbl_A
的第1列和第2列中的元素分别按每列的颜色空间着色
tbl_A %>%
huxtable::add_colnames() %>%
map_background_color("for each column of tbl_A", by_colorspace("orange", "white", "green"))
2)接下来,我想通过tbl_B每一列的颜色空间为tbl_A
的第1列和第2列的元素着色,
即tbl_A
的表tbl_B[,1]
的col 1中的元素和tbl_A
的表tbl_B[,2]
的col 2中的元素
tbl_A %>%
huxtable::add_colnames() %>%
map_background_color("for each column of tbl_B", by_colorspace("orange", "white", "green"))
3)最后,不是按列而是按整个表:用ht2的值对ht中的元素进行着色:
ht <- as_hux(matrix(rnorm(25), 5, 5))
ht2 <- as_hux(matrix(rnorm(25), 5, 5))
map_background_color(ht, by_colorspace("orange", "white", "green"))
非常感谢您的帮助!
答案 0 :(得分:0)
A部分:要按列应用颜色空间,必须分别指定它们:
tbl_A %>%
map_background_color(everywhere, 1, by_colorspace("orange", "white", "green")) %>%
map_background_color(everywhere, 2, by_colorspace("orange", "white", "green")) %>%
huxtable::add_colnames()
这可能是一个功能请求,因为我可以想象按列执行是一个常见的用例。
B部分:我认为“手动”进行操作将是最简单的-即构造所需的颜色,然后在set_background_color
中使用它们。像这样,我们可以在by_colorspace
调用之外使用huxtable的map_
。同样,按列分别完成:
# this is hairy. Details in ?"huxtable::mapping-functions"
colors1 <- by_colorspace("orange", "white", "green")(tbl_B, 1:6, 1,
matrix(NA, 6, 1))
colors2 <- by_colorspace("orange", "white", "green")(tbl_B, 1:6, 2,
matrix(NA, 6, 1))
tbl_A %>%
set_background_color(everywhere, 1:2, cbind(colors1, colors2)) %>%
huxtable::add_colnames()
C部分,因此,颜色映射不是在单个列中完成,而是在整个表中完成:
colors_all <- by_colorspace("orange", "white", "green")(tbl_B, 1:6, 1:2,
matrix(NA, 6, 2))
tbl_A %>%
set_background_color(everywhere, 1:2, colors_all) %>%
huxtable::add_colnames()
更新。在github master(可能会变成huxtable 4.8.0)中,您现在确实可以执行以下操作:
tbl_A %>%
map_background_color(everywhere, 1:2,
by_colorspace("orange", "white", "green", colwise = TRUE))
而不是分别为每一列调用map_...
。