在d3js执行中跳过d3.extent()

时间:2015-12-26 06:40:07

标签: javascript d3.js scale

我尝试为下面的xDomain变量分配值,但是当我使用chrome调试器时,未定义该值,并且控制台不会打印console.log("DOMAIN" + element.created)行。什么可能导致d3查看这一行?

d3.json("tweets.json", function(error, data){

  if (error) return console.warn(error);

  console.log(data);

  //THIS PART GETS SKIPPED OVER
  var xDomain = d3.extent(data, function(element){
      console.log("DOMAIN" + element.created);
      time = parseTweetTime(element.created);
      return parseTime.parse(time);
  });

  xScale.domain(xDomain);



  var dots = svg.selectAll("circle")
      .data(data.tweet)
      .enter()
      .append("circle");

 dots.attr("r", function(d, i){ 
  return 5;

})
  .attr("cx", function(d){ 
    console.log(d.created);
    date = parseTime.parse(d.created);
    return xScale(date);
  })
  .attr("cy", function(d){ return yScale(d.text.length)})
  .style("fill", "black");

});

编辑: 这是tweets.json文件的一个示例

{
   "tweet":[
           {"text": "hello"}
           {"text": "goodbye"}
    ]
}

1 个答案:

答案 0 :(得分:1)

错误是你计算范围的方式。 正如您的数据集是这样的:

{
   "tweet":[
           {"text": "hello"}
           {"text": "goodbye"}
    ]
}

所以不要这样做:

d3.extent(data, function(element){ ...}

这样做:

d3.extent(data.tweet, function(element){ ... });