如何使用 d3.domain 从 JSON 文件的多个列中获取 d3.min 和 d3.max?
Posted
技术标签:
【中文标题】如何使用 d3.domain 从 JSON 文件的多个列中获取 d3.min 和 d3.max?【英文标题】:How do I use d3.domain to get d3.min and d3.max from multiple columns in a JSON file? 【发布时间】:2014-09-29 11:25:30 【问题描述】:这是我正在使用的 JSON 文件,我想使用 ysec.domain([d3.min(data, function (d) return ("male","female" 三列中的最小值and "both")), d3.max(data, function (d) return ("male","female" and "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"]
【问题讨论】:
【参考方案1】:在您的情况下,您实际上不需要考虑 both
列,因为它是 male
和 female
列的平均值。我能想到的解决您问题的最简单方法是这样的
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;
);
【讨论】:
【参考方案2】:幸运的是,在这种情况下您不需要两者,但如果需要,您可以使用 Math.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);
);
Math.max()
和 Math.min()
函数适用于您想要使用的任意多列。
【讨论】:
以上是关于如何使用 d3.domain 从 JSON 文件的多个列中获取 d3.min 和 d3.max?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jq 从复杂的 JSON 文件中获取简单的 JSON 数据文件