我正在try 创建一个D3图表,它将同时利用汇总统计信息(最小和最大值)以及未汇总数据.

我有一个CSV,其中包含一个职务代码(其中包含重复项)和一个十进制的salaryToMedian.我想按职务代码计算最小值和最大值.

我收到错误grouped is not a function.我正在try 整合.记录职务代码grouped is not a function0的最大值.

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);
});

推荐答案

Disclaimer: At the time of writing, the current version of d3 is version 7.6.1.

map返回一个数组,但您try 像访问函数一样访问它,即使用圆括号.

另有:d3.nest has been deprecated in d3 version 6,也就是in the docs:

弃用通知:使用JavaScript内置的Map、Set和Object类,而不是d3-Collection的相应方法.使用d3数组的group和ROLLUP,而不是d3集合的Nest.

但是:没有必要打那么多电话.你只需要d3.rollup美元.

d3.rollup(iterable, reduce, ...keys)

将指定的可迭代值分组并缩减为从键到值的InternMap.

这应该会起到作用(一旦您将数据存储在变量data中):

// ... 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)

我创造了a playground example here on ObeservableHQ个.

Javascript相关问答推荐

你怎么看啦啦队的回应?

如何在bslib nav_insert之后更改导航标签的CSS类和样式?

如何使用子字符串在数组中搜索重复项

使用POST请求时,Req.Body为空

在Java中寻找三次Bezier曲线上的点及其Angular

检索相加到点的子项

如何在Svelte中从一个codec函数中调用error()?

try 使用PM2在AWS ubuntu服务器上运行 node 进程时出错

如何使用基于promise (非事件emits 器)的方法来传输数据?

我正在试着做一个TicTacToe Ai来和我玩.但是,我试着在第一个方块被点击时出现一个X,然后在第二个方块之后出现一个O

输入数据覆盖JSON文件

扩散运算符未按预期工作,引发语法错误

无法在Adyen自定义卡安全字段创建中使用自定义占位符

如果查询为空,则MongoDB将所有文档与$in匹配

在HTML中使用meta标记来指定定制元数据以用于使用JavaScript进行检索是不是一个坏主意?

Mongoose DeleteOne()和DeleteMany()不工作

TypeScrip Types-向流程对象添加属性

Tinymce CREATE COMMENT函数不读取更新状态

无法将产品添加到Collection 夹屏幕并获取此TypeError:undefined不是函数?

改进了正则表达式的性能