在 dc-js geoChoropleth 图表的标题中使用完整的组记录

Use full group record within title in dc-js geoChoropleth chart

我有一个组,其元素在缩减后看起来像这样的伪代码:

{
  key:"somevalue",
  value: {
    sum: the_total,
    names:{
     a: a_number,
     b: b_number,
     c:c_number
    }
  }
}

在我的 dc-js geoChoropleth 图中,valueAccessor(d) => d.value.sum

在我的 title 中,我想使用减少的 names 部分。但是当我使用 .title((d) => {...}) 时,我只能访问 valueAccessor 函数产生的键和值,而不是原始记录。

是这个意思吗?

这是 geoChoropleth 图表的一个特点。

大多数图表将组数据直接绑定到图表元素,但由于 geoChoropleth 图表有两个数据源,地图和组,它 binds the map data and hides the group data

这是直接的罪魁祸首:

_renderTitles (regionG, layerIndex, data) {
    if (this.renderTitle()) {
        regionG.selectAll('title').text(d => {
            const key = this._getKey(layerIndex, d);
            const value = data[key];
            return this.title()({key: key, value: value});
        });
    }
}

它正在创建 key/value objects 本身,并且正如您推断的那样,该值来自 valueAccessor:

_generateLayeredData () {
    const data = {};
    const groupAll = this.data();
    for (let i = 0; i < groupAll.length; ++i) {
        data[this.keyAccessor()(groupAll[i])] = this.valueAccessor()(groupAll[i]);
    }
    return data;
}

抱歉,这不是一个完整的答案,但我建议添加一个 pretransition 处理程序来替换标题,或者使用传递给标题访问器的密钥来查找您需要的数据。

正如我在上面链接的问题中指出的那样,我认为这是一个非常严重的设计错误。