在NVD3中读入multiBarHorizo​​ntalChart的csv数据?

时间:2014-06-11 22:29:12

标签: csv nvd3.js

我希望在" multiBarHorizo​​ntalChart"中可视化数据。在NVD3中,从.csv文件中读取数据。

我努力以正确的格式获取数据。根据NVD3.org,multiBarHorizo​​ntalChart的格式必须是:

[
  {
    "key": "Series 1",
    "color": "#d67777",
    "values": [
      { 
        "label" : "Group A" ,
        "value" : -1.8746444827653
      } , 
      { 
        "label" : "Group B" ,
        "value" : -8.0961543492239
      }
    ]
  },

我正在使用的代码如下。有人能告诉我我做错了吗?

d3.csv("File.csv", function (error, csv) {
  if (error) return console.log("there was an error loading the csv: " + error);
  console.log("there are " + csv.length + " elements in my csv set");

var mmm = ["pre_ineq","post_ineq"];

for (var i = 0; i < mmm.length; i++) {
 myall[i].values.label = csv.map(function(d) { return [ d["label"] ]; });
 myall[i].values.value = csv.map(function(d) { return [ +d[mmm[i]] ]; });

//or?  myall[i].values = csv.map(function(d) { return [ label=d["label"], +d[mmm[i]] ]; });

};


var chart;
nv.addGraph(function() {
  var chart = nv.models.multiBarHorizontalChart()
      .x(function(d) { return d.label })
      .y(function(d) { return d.value })
      .margin({top: 30, right: 20, bottom: 50, left: 175})
      .showValues(true)
      .tooltips(false)
      .showControls(false);

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

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

  nv.utils.windowResize(chart.update);

  return chart;
});

});

非常感谢!

1 个答案:

答案 0 :(得分:1)

猜猜你应该做点什么

for (var i = 0; i < mmm.length; i++) {
    myall[i].values = csv.map(function(d) { 
        return { "label": d["label"], "value": +d[mmm[i]] }; 
    });
};

但它没有经过测试。