d3中json的最大值和最小值

时间:2014-05-14 21:08:51

标签: json svg d3.js

我正在遵循使用tsv而不是json的d3教程。 我对json更熟悉,所以我想将自己的json对象应用到示例中。

我发现了这个并尝试应用它,但我仍然遇到错误: How to use d3.min and d3.max within a d3.json command

这是我的代码。我用我的第一个日志返回了json对象。我的第二个日志正确的长度。

然而,当我尝试在d3.max()中使用d.value时出现此错误 错误:属性width =“NaN”

的值无效
d3.json("sampledata.json", function(error, data) {

            var maxx = d3.entries(data)
                .sort(function(a,b){return d3.descending(a.value, b.value);})

            console.log(maxx)

            console.log(data.length);
            mydata = data;
            x.domain([0, d3.max(data, function(d) { return d.value; })])


chart.attr("height", barHeight * mydata.length);

var bar = chart.selectAll("g")
    .data(mydata)
  .enter().append("g")
    .attr("transform", function(d, i) { return "translate(0," + i * barHeight + ")"; });

// WHERE MY ERROR IS because there is no value for x
bar.append("rect")
    .attr("width", x)
    .attr("height", barHeight - 1);

bar.append("text")
    .attr("x", function(d) { return x(d) - 3; })
    .attr("y", barHeight / 2)
    .attr("dy", ".35em")
    .text(function(d) { return d; });

});

1 个答案:

答案 0 :(得分:0)

我认为您需要做的事情,因为x是某种规模,如下:

bar.append("rect")
    .attr("width", function(d) {
       return x(d.value);
    })
    .attr("height", barHeight - 1);

否则它只会将d传递给x,而{{1}}无法帮助您。