R GT-Table 使用调色板函数时使 NA 透明

问题描述 投票:0回答:0

这是我的数据框:

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 值不出现

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 函数中定义它?!

r na gt color-palette
© www.soinside.com 2019 - 2024. All rights reserved.