我正在遵循使用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; });
});
答案 0 :(得分:0)
我认为您需要做的事情,因为x
是某种规模,如下:
bar.append("rect")
.attr("width", function(d) {
return x(d.value);
})
.attr("height", barHeight - 1);
否则它只会将d
传递给x
,而{{1}}无法帮助您。