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

gt表格条件格式红绿灯系统实现:检测值与限值比对梯度高亮设置

gt表格多梯度红绿灯条件格式实现方案

核心思路

先对原始数据做预处理,合并两个限值列得到每行的有效限值,计算检测值与限值的比值后,通过gt的data_color()函数批量映射填充颜色,适配大数据集使用。

步骤1:数据预处理

先合并ADWG和AGWR列得到每行的有效限值,同时计算检测值与限值的比值,中间计算用的列后续可隐藏不展示:

library(dplyr)
library(gt)

final_processed <- final %>%
  mutate(
    # 取两个限值中非NA的作为当前行有效限值,若两个都存在需取更严值可改为pmin(ADWG, AGWR, na.rm = T)
    cur_limit = coalesce(ADWG, AGWR),
    # 计算检测值与限值的比值
    value_ratio = Value / cur_limit
  )

步骤2:完整gt表格代码

final_processed %>%
  gt() %>%
  # 隐藏中间计算列,不改变原表格展示结构
  cols_hide(columns = c(cur_limit, value_ratio)) %>%
  tab_options(
    heading.title.font.size = "medium",
    heading.subtitle.font.size = "small",
    table.font.size = "small",
    table.font.names = "Arial") %>%
  cols_align(align = "left", columns = everything()) %>%
  cols_label(Value = 'Result') %>%
  tab_spanner(label = "Results",columns = c(Analyte, Units, Category, Value)) %>%
  tab_spanner(label = "Guidelines", columns = c(ADWG, AGWR)) %>%
  fmt_missing(columns = everything(), missing_text = "-") %>%
  fmt_number(columns = where(is.numeric), n_sigfig = 2) %>%
  # 批量实现梯度颜色填充
  data_color(
    columns = Value,
    rows = !is.na(cur_limit),
    fn = function(x) {
      ratios <- final_processed$value_ratio[!is.na(final_processed$cur_limit)]
      case_when(
        ratios <= 0.1 ~ "#00BA38", # 绿色:检测值≤限值10%
        ratios > 0.1 & ratios < 0.5 ~ "#F6E400", # 黄色:10%限值<检测值<50%限值
        ratios >= 0.5 & ratios < 1 ~ "#FFA500", # 橙色:50%限值<检测值<100%限值
        ratios >= 1 ~ "#F8766D" # 红色:检测值≥限值
      )
    },
    apply_to = "fill"
  ) %>%
  # 给超标的检测值加粗
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(columns = Value, rows = value_ratio >= 1)
  )

说明

  • 该方案适配任意规模的数据集,无需手动逐行设置条件
  • 阈值和色值可根据需求直接修改case_when中的对应参数即可
  • 若某行同时存在ADWG和AGWR两个限值,只需修改cur_limit的计算逻辑即可适配,比如取最小值作为更严格的判断标准

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 20:06:02