2016-09-15 171 views
0
JSON数据,绘制图表nvd3
d3.json('http://www.mocky.io/v2/57d14d2f100000cd19208e19', function (error, historicalBarChart) { 

(function() { 


    nv.addGraph(function() { 
    var chart = nv.models.discreteBarChart() 
     .x(function(d) { return d.label }) 
     .y(function(d) { return d.value }) 
     .staggerLabels(true) 
     //.staggerLabels(historicalBarChart[0].values.length > 8) 
     .showValues(true) 
     .duration(250) 
     .height(300) 
     .width(400) 
     ; 


     var filtered1=historicalBarChart[0].values.filter(function(d) { return d.value > 15;}); 

    console.log(filtered1); // getting filtered json here 

    d3.select('#chart2 svg') 
     .datum(filtered1) // doesn't render chart for filtered json 
     .transition().duration(500) 
     .call(chart); 
    nv.utils.windowResize(chart.update); 
    return chart; 

    }); 
})(); 
}); 

我试图大于15的API数据过滤数据的值,并绘制chart.But的数据是没有得到过滤,图表由于数据不可用而未呈现。如何过滤数据并显示nvd3图表?提前致谢 !!过滤器过滤用数据

回答

1

您的测试集(http://www.mocky.io/v2/57d14d2f100000cd19208e19)不包含带有labelvalue键的对象。 它包含只有一个对象的数组,其中包含一个value键。

所以,你应该使用: var filtered1 = historicalBarChart[0].values.filter(..),而不是仅仅historicalBarChart.filter(...)

+0

JSON的过滤..和图表呈现,但与整个未过滤的JSON ... –

+0

您可以发布请修改你的代码? – codename44

+0

根据你的建议更新了代码......即使json被过滤了,图表也不会呈现......我想也许它是由于json在过滤之后返回的格式造成的......还有一个错误控制台“Uncaught TypeError:无法读取未定义的属性”长度“... –

0

尝试了很多后,在该解决方案迷迷糊糊的,把过滤后的数据由nvd3所需的JSON格式是否trick..code这样做是下面..

VAR过滤= [{键: “累积表现”,值:filtered1}]