在 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
处理程序来替换标题,或者使用传递给标题访问器的密钥来查找您需要的数据。
正如我在上面链接的问题中指出的那样,我认为这是一个非常严重的设计错误。
我有一个组,其元素在缩减后看起来像这样的伪代码:
{
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
处理程序来替换标题,或者使用传递给标题访问器的密钥来查找您需要的数据。
正如我在上面链接的问题中指出的那样,我认为这是一个非常严重的设计错误。