1

出于某种原因,我的 stackAreaChart 将我的每个 y 值乘以 10。这是我目前所拥有的:

  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;
  });
4

1 回答 1

2

数组中的值data都是字符串。在 nvd3 世界的某个地方,这些被添加为字符串,而不是数字,然后你就会遇到你遇到的问题(例如"47" + "49"equals "4749")。

修复它的快速方法是将访问器更改为.y(function(d) { return +d[1] }). add将+字符串强制转换为数字。

但更好的解决方法是在 JSON 中从数字而不是字符串开始。

于 2013-04-03T04:32:13.480 回答