好的,所以我对 javascript 有点菜鸟,我需要从 csv 读取数据以使用 d3 制作条形图。条形图对我来说没有问题,从 csv 文件中读取是问题。这是我的代码:
var dataset;
d3.csv("gender_ratio.csv", function(data) {
dataset = data;
return dataset;
});
var add = function(year, total, males, females){
var year = {
year: year,
total: total,
males: males,
females: females
};
newdata.push(year);
return newdata;
};
for (var i = 0; i < dataset.length; i += 4){
add(dataset[i], dataset[i+1], dataset[i+2], dataset[i+3]);
return newdata;
};
有人能告诉我这里出了什么问题吗?我使用 modzilla firefox 运行此程序,因此浏览器安全性不是这里的问题。
加载 csv 数据的调用异步完成。这意味着你的for
循环在数据加载之前运行。
如果将 for 循环移动到调用的回调函数中d3.csv
然后数据就可用了。
您还应该检查返回的数据是什么样的d3.csv https://github.com/mbostock/d3/wiki/CSV。您的代码假设它返回一个平面数组,而它实际上返回一个对象数组,其中每个元素代表一行。如果您添加一个console.log
在函数的回调中,您将更好地了解数据的样子。
你还有一个return
for 循环中的语句,这意味着它只会在退出循环之前处理数据的第一个元素。
d3.csv("gender_ratio.csv", function(data) {
dataset = data;
// process data here
console.log(data);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)