2013-04-03 20 views
1

乘以數據點出於某種原因,我stackedAreaChart由10乘以我的每一個y值這裏是我到目前爲止有:D3在stackedAreaChart

var data = [{"key":"New York","values":[["2000","47"],["2001","49"],["2002","49"],["2003","47"],["2004","48"],["2005","49"],["2006","50"],["2007","48"],["2008","48"],["2009","47"],["2010","50"],["2011","49"],["2012","51"]]},{"key":"Los Angeles","values":[["2000","56"],["2001","55"],["2002","55"],["2003","56"],["2004","57"],["2005","56"],["2006","57"],["2007","56"],["2008","57"],["2009","57"],["2010","57"],["2011","55"],["2012","56"]]}] ; 

    var colors = d3.scale.category10(); 
    keyColor = function(d, i) {return colors(d.key)}; 

    var chart; 
    nv.addGraph(function() { 
    chart = nv.models.stackedAreaChart() 
    .x(function(d) { return d[0] }) 
    .y(function(d) { return d[1] }) 
    .color(keyColor) 

    chart.xAxis 
    .showMaxMin(false) 

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

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

    nv.utils.windowResize(chart.update); 

    chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); }); 

    return chart; 
    }); 

回答

2

data數組中的值都是字符串。在nvd3世界的某個地方,它們被加在字符串中,而不是數字,然後你遇到了你遇到的問題(例如"47" + "49"等於"4749")。

修復它的快速方法是將您的訪問器更改爲.y(function(d) { return +d[1] })。添加的+將字符串強制轉換爲數字。

但更好的解決方法是從數字開始 - 而不是字符串 - 在你的JSON中。