d3.js执行中跳过d3.extent()

d3.extent() gets skipped in d3js execution

本文关键字:d3 extent js 执行      更新时间:2023-09-26

我正在尝试为下面的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"}
    ]
}

错误在于计算范围的方式。数据集如下所示:

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

因此,与其这样做:

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

这样做:

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