2

我正在尝试使用 gt 包从 538 重新创建一个简单的表。我想使用 0 作为色标域的中点并将其设置为白色,但 0 不是实际域的中点。

df <- tribble(
  ~SEASON, ~ACC, ~BIG_10, ~BIG_12, ~PAC_12, ~SEC,
  2019, .02, -.05, 0, .02, .04,
  2018, -.06, .07, .07, .02, .01,
  2017, .05, -.04, .06, .16, .04,
  2016, 0, .05, -.04, -.02, .07,
  2015, .06, -.04, -.03, .01, .06,
  2014, .04, .05, .14, -.01, .06
)

这就是我试图做的:

gt(df) %>%
  data_color(
    columns = 2:6,
    colors = scales::col_numeric(
      palette = c('#feb8cd', '#ffffff', '#69cfd5'),
      domain = c(-.06,0, .16)
    )
  )

桌子

这不会设置刻度的中点,因为 0.04 等值仍然略带红色/粉红色。我希望那些是蓝色的。我基本上想要两个域,负值(红色到白色)和正值(白色到蓝色)有没有办法做到这一点?

4

1 回答 1

2

它看起来scales::col_numeric不查看单个域值 - 它只是获取范围并将其平均划分。

您可以创建自己的函数来调用两个col_numeric函数之一。

pal <- function(x) {
  f_neg <- scales::col_numeric(
    palette = c('#feb8cd', '#ffffff'),
    domain = c(-.06, 0)
  )
  f_pos <- scales::col_numeric(
    palette = c('#ffffff', '#69cfd5'),
    domain = c(0, 0.16)
  )
  ifelse(x < 0, f_neg(x), f_pos(x))
}

gt(df) %>%
  data_color(columns = 2:6, colors = pal)

图片

于 2020-10-26T08:32:42.370 回答