簡體   English   中英

R gt:用另一列的值着色一列

[英]R gt: color a column by another column's value

我想創建一個 gt 表,在其中我將兩列中的數值一起顯示在一個單元格中,但僅根據其中一個列的值對單元格進行着色。

例如,使用ToothGrowth示例數據,我想將lendose列放在一個單元格中,但通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM