我试图创建一个线生成器函数,我可以向其发送任意数据集以进行渲染。但是我只是从函数中获取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))
答案 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/