首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在D3中创建汇总统计数据

在D3中创建汇总统计数据
EN

Stack Overflow用户
提问于 2022-08-03 22:52:12
回答 1查看 88关注 0票数 2

我正在尝试创建一个D3图表,它将同时利用汇总统计数据(最小和最大)以及未汇总的数据。

我有一个CSV,它包含一个作业代码(包含重复的)和一个salaryToMedian,它是十进制的。我想通过作业代码来计算最小和最大。

我收到了错误grouped is not a function。我正在尝试console.log最大的职务代码1000。

代码语言:javascript
复制
d3.csv("http://127.0.0.1:8887/myData.csv").then(function(data){
    var grouped = d3.nest()
     .key(function(d) { return d.jobCode; })
     .rollup(function(v) { 
         return {
           jobCodeMax: d3.max(v, function(d) { return d.salaryToMedian; }),
           jobCodeMax: d3.min(v, function(d) { return d.salaryToMedian; }),
           values: v
         }; 
     })
     .entries(data)
     .map(function(d) {
       return {
         JobCode: d.key,
         jobCodeMax: d.value.jobCodeMax,
         jobCodeMin: d.value.jobCodeMin
       };
     });

    console.log(grouped(1000).jobCodeMax);
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-05 08:06:15

免责声明:在编写本报告时,d3的当前版本是7.6.1版本。

map返回一个数组,但是您尝试像函数一样访问它,即使用括号。

还有:d3 . been在d3版本6中已被废弃,也被声明为在医生里

废弃注意:使用JavaScript的内置Map、Set和对象类,而不是d3-集合的相应方法。使用d3数组的组和汇总代替d3集合的嵌套。

但是:没必要打这些电话。你只需要d3.rollup

d3.rollup(iterable, reduce, ...keys) 分组,并将指定的可迭代值从键降到值,并将其归为InternMap。

这应该可以做到这一点(一旦您将数据存储在变量data中):

代码语言:javascript
复制
// ... get data into variable data ...
const keyFn = d => d.jobCode
const valueFn = d => d.salaryToMedian
const summaryReducer = function(values) {  
  return {
    key: keyFn(values[0]), // if you want to also store the key in the summary
    max: d3.max(values, valueFn),
    min: d3.min(values, valueFn),
    /* any other summarization you want based on values */
    values: values
  }
}  
const grouped = d3.rollup(data, summaryReducer, keyFn) // all you need is d3.rollup
const job1000 = grouped.get(1000)

我创建了ObeservableHQ上的游乐场示例

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73228628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档