在D3 V4中,如何在nest()函数之后访问处理后的数据集?

时间:2018-10-24 14:55:17

标签: javascript d3.js

我对D3.js完全陌生。现在,我偶然发现了与该库的nest()有关的问题。

下面是我在D3 v4中nest()的代码。请注意,我在寻找time_in_hospital的平均值。问题是var check没有提供我想要的数据。

var groupByAgeAndtime = d3.nest()
              .key(function(d) { return d.age; })
              .rollup(function(v) { return d3.mean(v, function(d) { return d.time_in_hospital; }); })
              .object(datapoints);//specify the dataset used

    var check = d3.min(groupByAgeAndtime, function(d){
        return d.time_in_hospital;
    });
    console.log(groupByAgeAndtime);
    console.log(check);

屏幕截图内正方形区域中的平均值是我想通过var check获取的数据。

在屏幕截图中,为什么未定义var check

1 个答案:

答案 0 :(得分:0)

checkundefined,因为d3.min要求传递一个数组以返回最小值。

  

d3.min:使用自然顺序返回给定数组中的最小值

正确计算了groupByAgeAndTime之后,您只需将键传递给d3.min并获取其最小值即可。这是带有示例数据集的代码:

var datapoints = [
	{age: '0-10', time_in_hospital: 20},
	{age: '10-20', time_in_hospital: 60},
	{age: '20-30', time_in_hospital: 12},
	{age: '30-40', time_in_hospital: 34},
	{age: '0-10', time_in_hospital: 3},
	{age: '10-20', time_in_hospital: 5},
	{age: '20-30', time_in_hospital: 10},  
];

var groupByAgeAndtime = d3.nest()
	.key(function (d) { return d.age; })
  .rollup(function(v) { return d3.mean(v, function(d) { return d.time_in_hospital; }); })
  .object(datapoints);//specify the dataset used
  
var check = d3.min(Object.keys(groupByAgeAndtime), function(d){
  return groupByAgeAndtime[d];
});
console.log(groupByAgeAndtime);
console.log(check);
<script src="https://d3js.org/d3.v4.min.js"></script>

希望这会有所帮助。