这是我的数据框:
Test = structure(list(Corr_p = c(0.65, 0.64, 0.64, NA, 0.79, 0.77),
Case_p = c(24.57, 12.89, 20.92, NA, 11.1, 12.2),
Control_p = c(16.4, 9.38, 16.21, NA, 7, 6.17),
Delta_p = c(49.82, 37.42, 29.06, NA, 58.57, 97.73)),
row.names = 18:23, class = "data.frame")
我定义了一个调色板,一个用于 Delta_p 列,一个用于 Corr_p
library(gt)
pal <- function(x) {
f_neg <- scales::col_numeric(
palette = c(emerald),
domain = c(min(test, na.rm = TRUE), 0)
)
f_pos1 <- scales::col_numeric(
palette = c(oryel),
domain = c(0, 300)
)
f_pos2 <- scales::col_numeric(
palette = c(sunshort),
domain = c(300, 500)
)
f_pos3 <- scales::col_numeric(
palette = c(toplevel),
domain = c(500, max(test, na.rm = TRUE))
)
dplyr::case_when(
x < 0 ~ f_neg(x),
x < 300 ~ f_pos1(x),
x < 500 ~ f_pos2(x),
.default = f_pos3(x)
)
}
library(scales)
corr_palette_pos <- col_numeric(c("#FEF0D9", "#990000"), domain = c(min_cor_pos, max_cor_pos), alpha = 0.75)
然后我绘制表格。正如您所看到的,它使用 NA 值的默认颜色。
Test %>%
gt() %>%
data_color(columns = c(Delta_p), colors = pal) %>%
data_color(columns = c(Corr_p), colors = corr_palette_pos)
但我希望它是透明的或白色的,就像背景一样。我发现了很多例子:R gt 表使 NA 值不出现 https://stackoverflow.com/questions/73599951/r-gt-table-make-na-values-not-appear
data_color(
columns = colnames(df)[grep("res", colnames(df))],
colors = scales::col_numeric(
palette = pal,
domain = c(0, 20),
na.color = "transparent"
)
) %>%
但是当我像这样使用它时:
Test %>%
gt() %>%
data_color(columns = c(Delta_p), colors = scales::col_numeric(palette = pal,
domain = c(29.06,97.73),
na.color = "transparent")) %>%
data_color(columns = c(Corr_p), colors = corr_palette_pos)
所有值均采用相同颜色:
请问有什么想法,如何解决这个问题吗?我的想法是我必须在 pal 函数中以某种方式定义它?!
UPDATE
PS:真的没有人可以帮忙吗?
为gt表中的data_color设置不对称中点 https://stackoverflow.com/questions/64469714/set-asymmetric-midpoint-for-data-color-in-gt-table在本主题中,有关于如何更改 if-else-语句中的 NA-Color 的评论。我尝试在 case-when-Statement 中实现它,但没有成功。我认为这是改变它的正确位置,但我只是不知道如何改变。
ifelse(x < 0 | is.na(x), f_neg(x), f_pos(x))