You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用data_color设置表格颜色:0值单元格红其余为白

实现gt表格中值为0的单元格红色高亮

我明白你想要的是一个简单的二元着色规则——只有值为0的单元格变红,其余保持白色。你之前用的col_numeric()是生成渐变调色板,这就是为什么达不到你要的效果,咱们换用scales::col_bin()来实现这个精准的条件着色:

核心代码示例

library(gt)
library(scales)

# 假设你的数据框是updates.computers,这里先构造一个示例方便测试
updates.computers <- data.frame(
  Computer_Name = c("Laptop-1", "Desktop-2", "Server-3"),
  Critical_Updates = c(0, 2, 0),
  Security_Updates = c(3, 0, 1),
  Optional_Updates = c(4, 5, 0)
)

# 生成带条件着色的gt表格
updates.computers %>%
  gt() %>%
  data_color(
    # 指定需要应用着色的列(这里从第2列开始到最后一列)
    columns = colnames(updates.computers)[2:ncol(updates.computers)],
    # 用col_bin实现二元颜色映射
    colors = col_bin(
      # 划分两个区间:<=0 和 >0
      bins = c(-Inf, 0, Inf),
      # 对应区间的颜色:红色(<=0)、白色(>0)
      colors = c("red", "white"),
      # 自动适配数据的取值范围
      domain = NULL
    ),
    # 可选:保留你原来设置的透明度,不需要可以删掉这一行
    alpha = 0.8
  )

代码说明

  • col_bin()专门用于将数值划分成离散区间并分配对应颜色,这里我们只定义两个区间,完美匹配你“值为0变红,其他白色”的需求;
  • bins = c(-Inf, 0, Inf)会把所有小于等于0的值归到第一个区间,大于0的归到第二个区间,刚好覆盖你要的判断逻辑;
  • 如果你想让红色更醒目,可以把"red"换成具体的十六进制颜色码,比如"#E74C3C"(深一点的红色)。

这样设置后,所有值为0的单元格会被染成红色,其他单元格保持白色,完全符合你的需求~

内容的提问来源于stack exchange,提问作者Maxim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 09:52:44