我想要创建一个gt表,在这个表中,我在单个单元格中一起显示两列的数值,但是只根据列的一个值对单元格进行着色。
例如,使用ToothGrowth示例数据,我希望将len和dose列放在一个单元格中,但用dose值对单元格背景进行着色。
我尝试手动创建一个颜色向量来为len_dose列着色,但这不起作用,因为它似乎是在将颜色向量重新应用于每个不同级别的len_dose,而不是dose。我想您可以手动使用tab_style()格式化单元格,但这似乎效率低下,并且没有给您提供一个很好的功能,即文本颜色的变化可以最大限度地增强与背景的对比。我不知道有什么有效的方法能做到这一点。
我试过的是:
library(gt)
library(dplyr)
library(scales)
library(glue)
# Manually map dose to color
dose_colors <- col_numeric(palette = 'Reds', domain = range(ToothGrowth$dose))(ToothGrowth$dose)
ToothGrowth %>%
mutate(len_dose = glue('{len}: ({dose})')) %>%
gt(rowname_col = 'supp') %>%
cols_hide(c(len, dose)) %>%
data_color(len_dose, colors = dose_colors) 输出(不太好,因为不受剂量的影响):

发布于 2022-06-10 01:12:47
还不确定您是否找到了解决这一问题的方法,但下面是我所做的:
tab_style(),则不需要尝试创建颜色向量,而是可以根据dose列设置所需的背景色。如果您希望根据dose对值进行不同的着色,除了我在这里显示的内容之外,还可以为所需的值创建另一个tab_style()。
图书馆(Gt)库(Dplyr)库(缩尺)库(Glue) ToothGrowth %>%变异( len_dose = glue('{len}:({剂量})‘)) %>% gt(rowname_col = 'supp') %>% tab_style( style =cell_fill(色=“古绿色”),location = cells_body(列=len_dose),行=剂量>= 1.0 ) %>% cols_hide(c(len,剂量))

https://stackoverflow.com/questions/67722820
复制相似问题