未捕获的TypeError:无法读取属性' y'在NV D3 StackedLine中未定义

时间:2015-08-18 15:17:45

标签: javascript d3.js charts nvd3.js

我使用nvd3有用的预打包图表整理了一个叠加的折线图。

我得到的图表大部分功能都很好,但每当我点击一个特定的系列时,就会出现错误' Uncaught TypeError:无法读取属性' y'未定义',图表不会调整大小以仅显示系列。

有关正确功能的示例:http://nvd3.org/examples/stackedArea.html

我已经检查过最常见的错误,包括不同大小的系列,并且没有这些错误。

我用于生成图表的代码是:

function stackedChart(data) {
    nv.addGraph(function() {
        var chart = nv.models.stackedAreaChart()
                      .margin({right: 100})
                      .x(function(d) { return d[0] })   
                      .y(function(d) { return d[1] })  
                      .useInteractiveGuideline(true)
                      .duration(500)    
                      .showControls(true)      
                      .clipEdge(true);


        chart.xAxis
            .tickFormat(d3.format(',.0f'));

        chart.yAxis
            .tickFormat(d3.format(',.2f'));

        d3.select('#stackedChart svg')
          .datum(data)
          .transition().duration(500).call(chart);

        nv.utils.windowResize(chart.update);

        return chart;
    });

}

stackedChart(a);

在jsfiddle中找到的数据中包含错误的实例:https://jsfiddle.net/0yxr15ut/5/

1 个答案:

答案 0 :(得分:1)

此问题已在此处解决: https://github.com/novus/nvd3/issues/1093 虽然不确定副作用,但可以解决此问题。 在nv.d3.js

中的scatter y函数中添加以下检查
.y(function(d) {
              if (d.display !== undefined) { return d.display.y + d.display.y0; }
              else return 0
            })

我创建了一个for存储库,您可以使用此更改。 https://github.com/nishantk92/nvd3.git