2013-04-02 203 views
18

我想使用d3.js从.csv导入一些数据。我在做这件事时遇到了麻烦,并想知道是否有人可以伸出援手。我的.csv文件的格式像这样:使用d3.js从.csv导入数据

max_i,min_i,max_f,min_f 
-122.1430195,-122.1430195,-122.415278,37.778643 
-122.1430195,-122.1430195,-122.40815,37.785034 
-122.4194155,-122.4194155,-122.4330827,37.7851673 
-122.4194155,-122.4194155,-122.4330827,37.7851673 
-118.4911912,-118.4911912,-118.3672828,33.9164666 
-121.8374777,-121.8374777,-121.8498415,39.7241178 
-115.172816,-115.172816,-115.078011,36.1586877 
-82.5618186,-82.5618186,-79.2274115,37.9308282 
-79.9958864,-79.9958864,-80.260396,40.1787544 
-74.1243063,-74.1243063,-74.040948,40.729688 
-106.609991,-106.609991,-106.015897,35.640949 

我尝试使用下面的代码加载数据:

var dataset = [] 
d3.csv("data.csv", function(data) { 
    dataset = data.map(function(d) { return [ +d["max_i"], +d["min_i"] ]; }); 
}); 
console.log(dataset) 

不过,我只是得到一个空的[]在控制台中。任何人都可以指出我的错误吗?

回答

20

将其更改为:

var dataset = [] 
d3.csv("data.csv", function(data) { 
    dataset = data.map(function(d) { return [ +d["max_i"], +d["min_i"] ]; }); 
    console.log(dataset) 
}); 

您需要检查回调内部数据集,一旦返回数据。

+0

谢谢 - 问题是我现在得到一个新的错误。这是控制台正在打印的内容。 '未捕获的类型错误:无法调用方法 '地图' 未定义example.html的组成:63 (匿名功能)example.html的:63 (匿名功能)d3.v2.min.js:1 řd3.v2。 min.js:2 r.onreadystatechange' – araspion

+0

我编辑了我的回复,我应该注意。由于您使用的是v2,因此没有错误参数。 –

+0

谢谢 - 我想我对这里的范围很困惑。为什么我需要检查回调中的数据集,即使我将数据分配给我在d3.csv()函数之外定义的全局变量? – araspion