代码之家  ›  专栏  ›  技术社区  ›  Rafa

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

  •  1
  • Rafa  · 技术社区  · 10 年前

    我正在尝试为我的 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");
    
    });
    

    编辑: 这是推文的一个示例。json文件

    {
       "tweet":[
               {"text": "hello"}
               {"text": "goodbye"}
        ]
    }
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   Cyril Cherian    10 年前

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

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

    因此,与其这样做:

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

    这样做:

    d3.extent(data.tweet, function(element){ ... });
    
    推荐文章