我正在尝试用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/
提前感谢您的帮助!
答案 0 :(得分:2)
如果你只是看代码,就很难找到问题:debtgdp
之后的空格和换行符之前的空格,位于CSV文件的第一行。
提示是这样的:无论是否包含parseFloat()
和一元运算符,d.debtgdp
始终为undefined
。
解决方案就是删除那个空间。从现在开始,检查CSV中的空格和不可打印的字符。
以下是您的工作代码:http://bl.ocks.org/anonymous/a4763e5cc824039cff369f6679d4722b