[英]R gt: color a column by another column's value
我想創建一個 gt 表,在其中我將兩列中的數值一起顯示在一個單元格中,但僅根據其中一個列的值對單元格進行着色。
例如,使用ToothGrowth
示例數據,我想將len
和dose
列放在一個單元格中,但通過dose
的值對單元格背景進行着色。
我嘗試手動創建 colors 的向量來為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)
Output(不好,因為沒有按劑量着色):
不確定您是否找到了解決方案,但這是我所做的:
如果您使用tab_style()
,則無需嘗試創建 colors 的矢量,而是可以根據dose
列設置所需的背景顏色。 如果您想根據dose
對值進行不同的着色,除了我在這里着色的內容之外,然后為所需的值創建另一個tab_style()
。
library(gt) library(dplyr) library(scales) library(glue) ToothGrowth %>% mutate(len_dose = glue('{len}: ({dose})')) %>% gt(rowname_col = 'supp') %>% tab_style( style = cell_fill(color = "palegreen"), location = cells_body( columns = len_dose, rows = dose >= 1.0 ) ) %>% cols_hide(c(len, dose))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.