NV.D3 无法读取未定义的 属性 'length'
NV.D3 Cannot read property 'length' of undefined
我正在尝试基于读取 CSV 数据构建一个简单的条形图。现在我只是在我的脚本中包含数据。当我尝试 运行 它时,出现此错误:
Uncaught TypeError: Cannot read property 'length' of undefined
这是脚本:
var data;
function showChart() {
var theCsv =
"name,value\n" +
"Foo,43\n" +
"bar,76\n" +
"foo2,88\n" +
"bar2,59\n";
var csvString;
var content = [{
key: "totals",
values: []
}];
var input = d3.csv.parse(theCsv, function(d) {
return {
name: d.name,
value: d.value
};
});
nv.addGraph(function() {
var chart = nv.models.discreteBarChart()
.x(function(d) {
return d.name
})
.y(function(d) {
return d.value
})
/*.showvalues(true)*/
d3.select('#chart svg')
.datum(input)
.transition(1000)
.call(chart)
nv.utils.windowResize(chart.update);
return chart;
});
fileDisplayArea.innerText = csvString
}
据我从调试中得知,错误发生在 .call(chart)
行,但我不知道问题出在哪里。我找到了几个讨论 D3 版本的链接,但我尝试了几个不同的链接,但仍然出现错误。
这是 JSFiddle。
看来您需要像这样将数据包装到另一个对象中:
var input = d3.csv.parse(theCsv, function(d) {
return {
name: d.name,
value: d.value
};
});
// get it into the form required by `nvd3`
input = [{ key: "Some Key", values: input }]
这里是 updated fiddle,上面多加了一行。
我找不到关于 为什么 的任何文档,但这似乎是使用的模式(基于 this example on the site)。
我正在尝试基于读取 CSV 数据构建一个简单的条形图。现在我只是在我的脚本中包含数据。当我尝试 运行 它时,出现此错误:
Uncaught TypeError: Cannot read property 'length' of undefined
这是脚本:
var data;
function showChart() {
var theCsv =
"name,value\n" +
"Foo,43\n" +
"bar,76\n" +
"foo2,88\n" +
"bar2,59\n";
var csvString;
var content = [{
key: "totals",
values: []
}];
var input = d3.csv.parse(theCsv, function(d) {
return {
name: d.name,
value: d.value
};
});
nv.addGraph(function() {
var chart = nv.models.discreteBarChart()
.x(function(d) {
return d.name
})
.y(function(d) {
return d.value
})
/*.showvalues(true)*/
d3.select('#chart svg')
.datum(input)
.transition(1000)
.call(chart)
nv.utils.windowResize(chart.update);
return chart;
});
fileDisplayArea.innerText = csvString
}
据我从调试中得知,错误发生在 .call(chart)
行,但我不知道问题出在哪里。我找到了几个讨论 D3 版本的链接,但我尝试了几个不同的链接,但仍然出现错误。
这是 JSFiddle。
看来您需要像这样将数据包装到另一个对象中:
var input = d3.csv.parse(theCsv, function(d) {
return {
name: d.name,
value: d.value
};
});
// get it into the form required by `nvd3`
input = [{ key: "Some Key", values: input }]
这里是 updated fiddle,上面多加了一行。
我找不到关于 为什么 的任何文档,但这似乎是使用的模式(基于 this example on the site)。