d3.js - 属性d:预期数量

时间:2017-07-20 09:18:28

标签: javascript d3.js

我的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 }...]

请帮我找出错误,看看我哪里出错了。

1 个答案:

答案 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;
});