dc.js reductio helper函数,如何以对象格式输出

时间:2016-04-16 20:17:25

标签: d3.js dc.js reductio

我正在学习精彩的图书馆,dc.js和crossfilter.js,我正在使用geochoropleth地图做一个例子。

我想提供一些数据并让地图绘制特定国家/地区,但这些国家/地区没有显示。这是一个更大的例子的一部分,我试图只提交我遇到问题的部分。 我在https://jsfiddle.net/wheatgrass/93w6p6dc/6/

发布了一个jfiddle

(但是让它运行起来有问题)你希望能看到数据和我的交叉滤波器输出。一切都进入console.log输出。

最初我将数据放在嵌套数组中,但请阅读有关cf需要" flattened"数据,所以我添加了扁平数据的两个子集示例,countries1和countries2。我想使用countries2。

我尝试使用reductio helper libs(yay!)让n1dimgroup按键输出" nid"和一系列有价值观的国家。我通过使用reductio github页面上的Readme.md中的示例来完成此操作。我在SO或其他地方找不到任何我正在尝试的例子。

我需要这方面的帮助。如何重写reducer以使n1dimgroup输出是一个具有键值的对象,如下所示?

{ key: Benin, value: 1}
{ key: Nepal, value: 2}
...

等?

非常感谢您的帮助和帮助。谢谢。 我缩短了下面的代码,但数据在jfiddle上。

下面的代码

<script>
//please see var countries2 on the jfiddle

 var countries = [
   "key":"Albania",
   "value":2,
   "key":"Jamaica",
    "value":1,
    "key":"Senegal",
     "value":3,
    "key":"Morocco",
     "value":2,
     "nid":"0",
     },
     {
      "key":"Fiji",
       "value":1,
      "key":"Mongolia",
      "value":1,
       "key":"Uganda",
       "value":1,
       "nid":"36",
       }
     var n1 = crossfilter(countries2);
     var n1dim = n1.dimension(function(d) { return d.nid});
     var n1dimgroup = n1dim.group();
      console.log("n1dim",n1dim.top(Infinity));
       console.log("n1dimgroup",n1dimgroup.top(Infinity));

var reducer = reductio()
     .exception(function(d) { return d.key; })
     .exceptionCount(true)
     .exceptionSum(function(d) { return d.value; });
reducer(n1dimgroup);

console.log('reducer', reducer);
console.log('n1dimgrouptop after reductio', n1dimgroup.top(Infinity));
console.log('n1dimgrouptop.key', n1dimgroup.top(Infinity).key);
console.log('n1dimgrouptop.value', n1dimgroup.top(Infinity).value);
</script>

如何让reducer以对象中的键值形式提供输出?

1 个答案:

答案 0 :(得分:1)

Ethan的示例小提示向我展示了如何使用访问器功能 在组上使用reductio lib。这回答了我的问题。谢谢!