D3线生成器仅生成NaN值

时间:2014-08-13 06:21:01

标签: javascript d3.js

我试图创建一个线生成器函数,我可以向其发送任意数据集以进行渲染。但是我只是从函数中获取NaN。这是我的演示代码,显示了我遇到的问题:JsFiddle code。 (单击右上角的错误并选择命令行以查看console.log输出(如果未自动显示)

var dataset = [{"x": "W3", "y":1}, {"x": "W5", "y":12},{"x": "W8", "y":1}, {"x": "W11", "y":9}];

var x = d3.scale.linear().range([0, 100 - 2]);
var y = d3.scale.linear().range([25 - 4, 0]);

x.domain(d3.extent(dataset, function(d) { return d.x; }));
y.domain(d3.extent(dataset, function(d) { return d.y; }));

var sparkLine = d3.svg.line()
  .interpolate("basis")
  .x( function (d) { x(d.x); })
  .y( function (d) { y(d.y); });

console.log(sparkLine(dataset))

1 个答案:

答案 0 :(得分:1)

你错过了sparkLine的x和y定义中的return

同样在你的小提琴中,我必须用单个方括号替换数据周围的双方括号,使其成为一个简单的数组而不是嵌套数组。

var dataset = [{"x": 3, "y":1}, {"x": 5, "y":12},{"x": 8, "y":1}, {"x": 11, "y":9}];

var x = d3.scale.linear().range([0, 100 - 2]);
var y = d3.scale.linear().range([25 - 4, 0]);

x.domain(d3.extent(dataset, function(d) { return d.x; }));
y.domain(d3.extent(dataset, function(d) { return d.y; }));

var sparkLine = d3.svg.line()
  .interpolate("basis")
  .x( function (d) { return x(d.x); })
  .y( function (d) { return y(d.y); });

console.log(sparkLine(dataset));

这是一个有效的小提琴:http://jsfiddle.net/kke56vzc/