问题描述
我正在尝试使用gt包从538重新创建一个简单表。我想使用0作为色阶域的中点并将其设置为白色,但0不是实际域的中点。
df <- tribble(
~SEASON,~ACC,~BIG_10,~BIG_12,~PAC_12,~SEC,2019,.02,-.05,.04,2018,-.06,.07,.01,2017,.05,-.04,.06,.16,2016,-.02,2015,-.03,2014,.14,-.01,.06
)
这是我试图做的事情
gt(df) %>%
data_color(
columns = 2:6,colors = scales::col_numeric(
palette = c('#feb8cd','#ffffff','#69cfd5'),domain = c(-.06,.16)
)
)
这不会设置刻度的中点,因为0.04之类的值仍然略带红色/粉红色。我想要那些是蓝色的。我基本上想要两个域,负值(红色到白色)和正值(白色到蓝色)有办法吗?
解决方法
看来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)