d3v4线路生成器返回NaN

时间:2017-05-18 16:03:03

标签: javascript d3.js

我刚刚开始使用d3,但我遇到了一个我似乎无法忍受的地方。使用这个简单的代码,生成的路径是 NaN 这是一个小提琴 http: //jsfiddle.net/P4Z75/619/




  let data = [{
日期:'1990-09-01',
年龄:26
},{
日期:'1990-12-22',
年龄:26
},{
日期:'1990-05-18',
年龄:27
},{
日期:'1991-08-24',
年龄:25
}];

 var width = 500;
 var height = 20;

 const parseTime = d3.timeParse('%Y- %m-%d');
 data = data.map(d =>({
 x:parseTime(d.date),
 y:d.age
} ));

 const x = d3.scaleTime()。domain(d3.extent(data.map(d =>(dx))))。range(0,width);&# xA;
 const y = d3.scaleLinear()。domain(d3.extent(data.map(d =>(dy))))。range(height,0);
&#xA ; const line = d3.line()。x(d =>(x(dx)))。y(d =>(y(dy)))。曲线(d3.curveLinear);
& #xA; console.log(line(data))// NaN
  



1 个答案:

答案 0 :(得分:1)

您没有正确指定比例范围:

const x = d3.scaleTime().domain(d3.extent(data.map(d => (d.x)))).range(0, width);

const y = d3.scaleLinear().domain(d3.extent(data.map(d => (d.y)))).range(height, 0);

与域一样,比例范围采用数组:

const x = d3.scaleTime().domain(d3.extent(data.map(d => (d.x)))).range([0, width]);

const y = d3.scaleLinear().domain(d3.extent(data.map(d => (d.y)))).range([height, 0]);

Fiddle.