如何使用d3.domain从JSON文件的多个列中获取d3.min和d3.max?

宿命的*_*な孤独 3 html json visualization d3.js

这是我正在使用的JSON文件,我想使用ysec.domain([d3.min(data,function(d)} {return(三列“ male”,“ female”和“ both “)}),d3.max(数据,函数(d){return(” male“,” female“和” both“这三列的最大值)}))); 无论如何,我是否要将最小值设置为三列中的最小值:“男性”,“女性”和“两者”,这也适用于最大值?

[{"year":"1960","male":"61.7","female":"65.7","both":"63.7","rankmale":"47","rankfemale":"50","rankall":"45"},
{"year":"1970","male":"65.4","female":"70.2","both":"67.7","rankmale":"45","rankfemale":"45","rankall":"44"},
{"year":"1980","male":"68.9","female":"74.2","both":"71.5","rankmale":"33","rankfemale":"36","rankall":"29"},
{"year":"1990","male":"71.9","female":"76.9","both":"74.3","rankmale":"28","rankfemale":"30","rankall":"30"},
{"year":"2000","male":"76.1","female":"80.1","both":"78.1","rankmale":"11","rankfemale":"24","rankall":"15"},
{"year":"2011","male":"80.1","female":"84.6","both":"82.3","rankmale":"6","rankfemale":"8","rankall":"5"}]
Run Code Online (Sandbox Code Playgroud)

Vin*_*ran 5

在您的情况下,您实际上不需要考虑both列,因为它是malefemale列的平均值。我能想到的解决问题的最简单方法就是这样

var max = d3.max(data, function(d){
    return (d.male < d.female) ? d.female : d.male;
});

var min = d3.min(data, function(d){
    return (d.male < d.female) ? d.male : d.female;
});
Run Code Online (Sandbox Code Playgroud)


J. *_*ley 5

幸运的是,在这种情况下您不需要两者,但如果需要,您可以使用 andMath.max()函数Math.min()来获取多个值的最大值或最小值。因此,您的最大值和最小值可能如下所示:

var max = d3.max(data, function(d){
    Math.max(d.male, d.female, d.both);
});
var max = d3.min(data, function(d){
    Math.min(d.male, d.female, d.both);
});
Run Code Online (Sandbox Code Playgroud)

和函数适用于您想要使用的任意数量的列Math.max()Math.min()