首页 > 解决方案 > 如何在 gt 中的多列上使用相同的渐变?

问题描述

我正在创建这个表gt

在此处输入图像描述

列中的梯度有两个不同的比例——注意 Var2 中的 0.1424 比 Var1 中的 0.2206 更深蓝色。如何更改调色板以使两列具有相同的色标?所以在新表中,最深的蓝色将是两列中的最大值(.4199),最深的红色将是两列中的最小值(.0003),所有其他 8 个单元格都落在该光谱之间的某个位置?

这是我的数据/代码:

ex <- structure(list(Var1 = c(0.0015, 0.22058, 0.335, 0.3747612, 0.4199048
), Var2 = c(0.0002778, 0.1424279, 0.1233159, 0.1684, 0.1816663
)), class = "data.frame", row.names = c(NA, -5L))
ex %>%
  gt() %>%
  tab_header(title = md("Title")) %>%
  
  fmt_number(
    vars(`Var1`, `Var2`), decimals = 4) %>%
  
  data_color(vars(`Var1`, `Var2`),
             colors = scales::col_numeric(palette = c("red", "white", "blue"), domain = NULL)
             
  )

标签: rdataframegt

解决方案


如果您指定域(根据docs),那应该可以解决您的问题,例如

library(gt)
ex <- structure(list(Var1 = c(0.0015, 0.22058, 0.335, 0.3747612, 0.4199048
), Var2 = c(0.0002778, 0.1424279, 0.1233159, 0.1684, 0.1816663
)), class = "data.frame", row.names = c(NA, -5L))

ex %>%
  gt() %>%
  data_color(vars(`Var1`, `Var2`),
             scales::col_numeric(palette = c("red", "white", "blue"),
                                 domain = c(0, 0.5)))

示例_1.png

如果您更改配色方案,您可以更清楚地看到渐变变化,例如

ex %>%
  gt() %>%
  data_color(vars(`Var1`, `Var2`),
             scales::col_numeric(palette = c("red", "white"),
                                 domain = c(0, 0.5)))

示例_2.png


推荐阅读