D3 json股票图表未显示

D3 json股票图表未显示,json,d3.js,stock,Json,D3.js,Stock,似乎无法从JSON中正确获取数据。我的图表甚至无法显示。有没有办法解决这个问题 <svg width="960" height="500"></svg> <script src="https://d3js.org/d3.v4.min.js"></script> <script> var svg = d3.select("svg"), margin = {top: 20, right: 2

似乎无法从JSON中正确获取数据。我的图表甚至无法显示。有没有办法解决这个问题

    <svg width="960" height="500"></svg>
    <script src="https://d3js.org/d3.v4.min.js"></script>
    <script>

    var svg = d3.select("svg"),
        margin = {top: 20, right: 20, bottom: 30, left: 50},
        width = +svg.attr("width") - margin.left - margin.right,
        height = +svg.attr("height") - margin.top - margin.bottom,
        g = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")");

    var parseTime = d3.timeParse("%d-%b-%y");

    var x = d3.scaleTime()
        .rangeRound([0, width]);

    var y = d3.scaleLinear()
        .rangeRound([height, 0]);

    var line = d3.line()
        .x(function(d) { return x(d.timeStr); })
        .y(function(d) { return y(d.bid); });

    d3.json("bboList.json", function(d) {
      d.timeStr = parseTime(d.timeStr);
      d.bid = +d.bid;
      return d;
    }, function(error, data) {
      if (error) throw error;

      x.domain(d3.extent(data, function(d) { return d.timeStr; }));
      y.domain(d3.extent(data, function(d) { return d.bid; }));

      g.append("g")
          .attr("transform", "translate(0," + height + ")")
          .call(d3.axisBottom(x))
        .select(".domain")
          .remove();

      g.append("g")
          .call(d3.axisLeft(y))
        .append("text")
          .attr("fill", "#000")
          .attr("transform", "rotate(-90)")
          .attr("y", 6)
          .attr("dy", "0.71em")
          .attr("text-anchor", "end")
          .text("Price ($)");

      g.append("path")
          .datum(data)
          .attr("fill", "none")
          .attr("stroke", "steelblue")
          .attr("stroke-linejoin", "round")
          .attr("stroke-linecap", "round")
          .attr("stroke-width", 1.5)
          .attr("d", line);
    });

    </script>

    d3.json
    不接受访问器(或行)函数。它必须是公正的:

    d3.json(url[,回调])

    在代码中:

    d3.json("bboList.json", function(d) {
        d.timeStr = parseTime(d.timeStr);
        d.bid = +d.bid;
        return d;
    }, function(error, data) {
        if (error) throw error;
        //...
    });
    
    URL和
    函数(错误、数据)
    之间的所有内容都是行函数

    解决方案:删除它,并使用
    forEach将值强制为数字和日期

    d3.json("bboList.json", function(error, data) {
        if (error) throw error;
    
        data.forEach(d => {
            d.timeStr = parseTime(d.timeStr);
            d.bid = +d.bid;
        });
    
        /...
    });
    

    说真的,如果你需要帮助,请帮助我们帮助你。阅读并适当地更新问题。好的,对不起,这是我第一次使用它,但仍然习惯它。我会做得更好
    d3.json("bboList.json", function(error, data) {
        if (error) throw error;
    
        data.forEach(d => {
            d.timeStr = parseTime(d.timeStr);
            d.bid = +d.bid;
        });
    
        /...
    });