【问题标题】:How do I use d3.domain to get d3.min and d3.max from multiple columns in a JSON file?如何使用 d3.domain 从 JSON 文件的多个列中获取 d3.min 和 d3.max?
【发布时间】: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"}]

【问题讨论】:

    标签: html json d3.js visualization


    【解决方案1】:

    在您的情况下,您实际上不需要考虑 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;
    });
    

    【讨论】:

      【解决方案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() 函数适用于您想要使用的任意多列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 1970-01-01
        • 2014-04-15
        • 1970-01-01
        • 2016-06-11
        • 1970-01-01
        • 2015-11-29
        相关资源
        最近更新 更多