D3.js无法识别来自CSV

时间:2017-03-10 14:10:08

标签: javascript csv d3.js svg

我正在尝试用D3.js生成一个双线图。

但是,在尝试绘制svg行时,我的控制台会抱怨以下内容:

Error: <path> attribute d: Expected number, "M0,NaNL120.01533182…".

这似乎是第二条svg线,其中所有y坐标都是NaN。为什么会这样?

我想,我可能会将我的csv转换为错误,但是console.log - 我的y坐标确实是数字。

// Get the data
d3.csv("debt.csv", function(error, data) {
  data.forEach(function(d) {
    d.year = parseDate(d.year);
    d.debt = +d.debt;
    d.debtgdp = parseFloat(d.debtgdp); // Trying to parse to a float
    console.log(typeof d.debtgdp); // Recognizes that it is a number
});

CSV如下所示:

year,debt,debtgdp 
1940,29,39.7
1950,228,24.8
1960,271,10.11
1970,707,9.2
1980,3022,9.0
1990,9593,10.5
1995,60121,61.0
2000,63435,46.6
2001,61760,42.8
2002,59253,40.0

所有代码都可以在这里找到:http://niklasstrengell.fi/temp/juha/

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

如果你只是代码,就很难找到问题:debtgdp之后的空格和换行符之前的空格,位于CSV文件的第一行。

提示是这样的:无论是否包含parseFloat()和一元运算符,d.debtgdp始终为undefined

解决方案就是删除那个空间。从现在开始,检查CSV中的空格和不可打印的字符。

以下是您的工作代码:http://bl.ocks.org/anonymous/a4763e5cc824039cff369f6679d4722b