如何基于数值为R表格单元格上色(偏好棕橙黄渐变)
实现单元格数值渐变上色的R包方案
1. formattable包
- 优势:轻量简洁,快速实现基础单元格颜色渐变,无需复杂配置
- 代码示例:
# 安装并加载包 install.packages("formattable") library(formattable) # 加载你的数据集 df <- structure(list(INT = c("BOI_CHA", "BPD_SLE", "BPG_SLE", "BPG_BPD", "SLE_GVC", "SLE_ANN", "BPG_CHA", "SLE_CHA", "BPG_ANN", "BPG_GVC", "BPG_SLE_ABL", "SLE_BOI", "BOI_ANN", "CHA_ANN", "BPG_BOI", "SLE_BOI_ABL", "BPG_BPD_SLE", "BPD_ANN", "BPG_BOI_ABL", "BPD_SLE_ABL", "BPD_GVC", "CHA_GVC", "BPD_CHA", "BPG_BPD_ABL", "ANN_GVC"), E66 = c(2L, 35L, 161L, 12L, 21L, 27L, 22L, 8L, 35L, 157L, 5L, 4L, 1L, 3L, 7L, 2L, 1L, 1L, 3L, 1L, 1L, 2L, 1L, 1L, 1L), K449 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), T8550 = c(20L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), T8558 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), T856 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K219 = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 13L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K316 = c(0L, 0L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K318 = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K910 = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Z422 = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K310 = c(0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L ), Z090 = c(0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K20 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Z4588 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L)), row.names = c(NA, -25L), class = c("tbl_df", "tbl", "data.frame")) # 应用深棕到浅黄的颜色渐变 formattable(df, align = c("left", rep("right", ncol(df)-1)), list( # 对所有数值列设置颜色渐变,INT列保持原样 area(col = 2:ncol(df)) ~ color_tile("#FFF9E6", "#8B4513") ))
- 说明:
color_tile参数中,#FFF9E6为浅黄底色,#8B4513为深棕色,数值越高的单元格颜色越接近深棕色。
2. gt包
- 优势:功能全面,支持精细化表格样式调整,适合生成专业报表
- 代码示例:
# 安装并加载包 install.packages("gt") library(gt) # 加载数据集(同上) df <- structure(list(INT = c("BOI_CHA", "BPD_SLE", "BPG_SLE", "BPG_BPD", "SLE_GVC", "SLE_ANN", "BPG_CHA", "SLE_CHA", "BPG_ANN", "BPG_GVC", "BPG_SLE_ABL", "SLE_BOI", "BOI_ANN", "CHA_ANN", "BPG_BOI", "SLE_BOI_ABL", "BPG_BPD_SLE", "BPD_ANN", "BPG_BOI_ABL", "BPD_SLE_ABL", "BPD_GVC", "CHA_GVC", "BPD_CHA", "BPG_BPD_ABL", "ANN_GVC"), E66 = c(2L, 35L, 161L, 12L, 21L, 27L, 22L, 8L, 35L, 157L, 5L, 4L, 1L, 3L, 7L, 2L, 1L, 1L, 3L, 1L, 1L, 2L, 1L, 1L, 1L), K449 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), T8550 = c(20L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), T8558 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), T856 = c(1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K219 = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 13L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K316 = c(0L, 0L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K318 = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K910 = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Z422 = c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K310 = c(0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L ), Z090 = c(0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), K20 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Z4588 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L)), row.names = c(NA, -25L), class = c("tbl_df", "tbl", "data.frame")) # 生成带颜色渐变的表格 df %>% gt() %>% # 为数值列设置深棕到浅黄的渐变 data_color( columns = 2:ncol(df), colors = scales::col_numeric( palette = c("#FFF9E6", "#8B4513"), domain = NULL # 自动适配每列的数值范围 ) ) %>% # 可选:添加表格条纹样式提升可读性 opt_table_style(style = "table-striped") %>% # 调整列对齐方式 cols_align(align = "right", columns = 2:ncol(df)) %>% cols_align(align = "left", columns = INT)
- 说明:
scales::col_numeric会根据每列的数值自动映射颜色,确保该列最大值对应深棕色,最小值对应浅黄色,适配不同列的数值范围。
内容的提问来源于stack exchange,提问作者Seydou GORO
相关产品推荐
相关产品推荐

