在D3 V4中访问对象值的复杂性

时间:2018-10-26 11:41:17

标签: javascript d3.js

我希望我的问题不会太难理解。在对数据使用nest()函数并将其分配给 var groupByAgeAndtime 后,我很难访问对象的值。我不知道如何直接访问该对象的值并将该值传递给d3.forceSimulation。

我尝试使用Object.keys(groupByAgeAndtime, function(d){ return groupByAgeAndTime[d];})访问对象的值,但没有用。

问题出在这里

var groupByAgeAndtime = d3.nest()
              .key(function(d) { return d.age; })
              //.key(function(d) { return d.time_in_hospital; })
              .rollup(function(v) {
                return{
                    mean_time_in_hospital : d3.mean(v, function(d){ return d.time_in_hospital;})

              } })
              .object(datapoints);

在嵌套和汇总数据之后,我不知道如何访问 var groupByAgeAndtime 并将其传递给另一个变量的函数:

var simulation = d3.forceSimulation()
    .force("x",d3.forceX(width/2).strength(0.05))
    .force("y",d3.forceY(height/2).strength(0.05))
    .force("collide", d3.forceCollide(function(d){
        return radiusScale(d.groupByAgeAndtime) + 2;
    }))

那我应该如何将嵌套数据传递给return radiusScale(d.groupByAgeAndtime) + 2;

这是我的小提琴代码:code in fiddle

如果某些专家能够回答我的问题,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

d3.nest数据转换回键值对数组

d3.map(datapoints).entries();

您必须自己进行排序,并且要注意,键是一个字符串,可能带有$