我的d3代码中有以下段。它抛出错误说
属性d:预期数字," MNaN,185697.89LNa ......"。
var lineGen = d3.svg.line()
.x(function (d) {
return d.date;
})
.y(function (d) {
return d.close;
})
.interpolate("basis");
var pth = g.append('svg:path')
.attr('d', lineGen(data))
.attr('stroke', '#000')
.attr('stroke-width', 3.5)
.attr('fill', 'none');
在intellisense中,它甚至没有显示" date"并且"关闭"为" d"。 下面给出的是我传递给函数的数据集。 我认为它不会访问"数据"数组,这就是为什么它说它是空的。并且,当我已经将它传递给方法时,想知道它是如何空的。
var data = [{ "date": "2016.07.19", "close": 185697.89 }, { "date":
"2016.07.20", "close": 185697.89 }, { "date": "2016.07.21", "close":
186601.1 }, { "date": "2016.07.22", "close": 187273.89 }, { "date":
"2016.07.25", "close": 186807.74 }, { "date": "2016.07.26", "close":
186893.26 }...]
请帮我找出错误,看看我哪里出错了。
答案 0 :(得分:0)
您应该将字符串日期(例如'2016.07.19')转换为JavaScript日期对象。
我根据你的数据创建了图表,看看这个小提琴 - http://jsfiddle.net/65otj2sL/1/
请注意以下事项:
var parseDate = d3.time.format("%Y.%m.%d").parse;
...
var data = [
{ "date": "2016.07.19", "close": 185697.89 },
{ "date": "2016.07.20", "close": 185697.89 },
{ "date": "2016.07.21", "close": 186601.1 },
{ "date": "2016.07.22", "close": 187273.89 },
{ "date": "2016.07.25", "close": 186807.74 },
{ "date": "2016.07.26", "close": 186893.26 }
];
data.forEach(function (d) {
d.date = parseDate(d.date);
d.close = +d.close;
});