You need to enable JavaScript to run this app. R语言collapsibleTree基于列值为全层级节点分配梯度着色
优惠活动
大模型
产品
解决方案
定价
更多

R语言collapsibleTree基于列值为全层级节点分配梯度着色

问题根源

collapsibleTreeSummary默认的着色逻辑和你的需求存在两处核心不匹配:

  • 色阶映射默认仅使用原始行级别的Color列数值范围(0-1)生成,不会自动纳入聚合后的中间节点数值。此时中间节点的聚合值(比如某分支下9个样本全为1,聚合后值为9)会超出默认色阶的映射范围,函数会自动将这类未匹配到映射规则的节点设置为无填充状态,这就是你目前仅能看到最底层Failure节点有颜色的直接原因。
  • 默认的聚合规则是对同组的attribute值取总和,而非计算能代表分支整体失败类型占比的统计值,会导致中间节点的Color值随样本数量线性增长,无法实现0-1区间的梯度映射效果。
实现全链路梯度着色的操作步骤

1. 替换默认聚合规则

给函数传入aggregation参数,指定中间节点的Color值为下属所有叶子节点的Color平均值:

  • 所有下属节点全为1的分支,节点Color值为1,对应预设的绿色
  • 所有下属节点全为0的分支,节点Color值为0,对应预设的红色
  • 同时包含0和1的混合分支,节点Color值落在0-1区间,对应红到绿的过渡梯度
    这套计算逻辑完全匹配你的着色需求:Headed Bar Coupler分支下所有样本的失败类型都是Bar fracture(对应Color=1),整支路径从根节点到叶节点的Color均值都为1,会全程显示对应1值的绿色,不会出现中间段无颜色的问题。

2. 固定色阶映射范围

显式传入colorScale参数,自定义固定在0-1区间的连续色阶,避免函数按照聚合后生成的累加值自动调整色阶范围导致颜色失真。
可直接运行的代码示例:

library(collapsibleTree)
library(scales)

collapsibleTreeSummary(
  Mostafa,
  hierarchy = c("Coupler Type", "Coupler Manufacturer", "Bar Size", "Failure"),
  root = "Mechanical Couplers",
  width = 800,
  attribute = "Color",
  # 指定聚合规则:取下属节点的Color均值
  aggregation = mean,
  # 固定0-1区间的红-白-绿色阶映射,使用色盲友好的配色值
  colorScale = col_numeric(
    palette = c("#d73027", "#f7f7f7", "#1a9850"),
    domain = c(0, 1)
  ),
  zoomable = FALSE,
  collapsed = FALSE
)

3. 常见偏差排查

  • 注意分类值的大小写与空格一致性:你当前测试数据里的Failure取值为"Bar Fracture"(首字母大写F),如果后续全量数据中存在"Bar fracture"(小写f)的写法,或是生成Color列时用的匹配规则与实际取值不一致,会导致Color标记计算错误,最终着色与预期不符。
  • 若后续需要拆分不同Coupler Model的子分支,只要将"Coupler Model"按顺序插入到hierarchy向量的对应位置即可,聚合和着色逻辑不受影响。
  • 根节点会自动按照全树所有样本的Color均值匹配对应梯度颜色,不需要额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 19:45:04