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

如何基于数据集指定属性设置dc.graph.js节点颜色

代码调整方案

你当前代码不生效的核心原因是没有绑定实际的fiber content属性,且颜色映射规则和你的数据集不匹配,按以下步骤修改即可:


1. 修正颜色维度定义(如果需要支持颜色维度过滤)

你之前参考的随机示例用了不存在的color字段,需要替换为你实际的纤维含量属性,注意属性名带空格,必须用中括号访问:

// 把原来的colorDimension定义替换成这个
var colorDimension = node_flat.crossfilter.dimension(function(n) {
        return n['fiber content']; // 绑定实际的纤维含量属性
    }),
    colorGroup = colorDimension.group();

如果你不需要基于纤维含量做交叉筛选操作,colorDimension和colorGroup可以直接删除,不需要定义。


2. 修正节点填充色的映射逻辑

调整nodeFill回调的返回值,同时修改颜色比例尺的定义域和你的三个纤维含量取值对应:

var colors = ['#1b9e77', '#d95f02', '#7570b3']; // 依次对应high、medium、low的颜色

Diagram
    .autoZoom('once-noanim')
    .altKeyZoom(true)
    .nodeFixed(function(n) { return n.value.fixed; })
    .nodeLabelFill(function(n) {
        var rgb = d3.rgb(Diagram.nodeFillScale()(Diagram.nodeFill()(n))),
            brightness = (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;
        return brightness > 127 ? 'black' : 'ghostwhite';
    })
    // 修改nodeFill返回纤维含量值作为颜色映射的key
    .nodeFill(function(kv) {
        return kv.value['fiber content'];
    })
    // 修改比例尺domain和三个纤维含量取值对应
    .nodeFillScale(d3.scale.ordinal().domain(['high','medium','low']).range(colors))

如果不需要自定义边的虚线样式,dashDimension、dashGroup和dasheses相关代码可以直接删除,不影响节点颜色功能。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:18:04