关于C3.js图表​​数据拆分

时间:2016-03-10 17:03:27

标签: javascript jquery arrays c3.js

由于我不熟悉C3.js库,当我试图拆分数组数据时,我有点困惑。

对于瞬间我有一些来自json的数组值。

    var jsondata=[[123],[45],[56],[22]];

   var jsondataName=[["apple"],["orange"],["banana"],["pear"]];

我试图将第一个数组 jsondata 传递到图表中,但这些值会进入同一列,这不是我想看到的。

我希望这些数组值成为独立数据并将名称推入其中

请参阅我制作的演示: http://jsfiddle.net/q8h39/92/

我想要的结果应该是这样的 enter image description here

更新json数据格式:

  "Name": apple,
    "data": {
        "value": 1434,
        }
  "Name": banana,
    "data": {
        "value": 342,
        }

    }
}

1 个答案:

答案 0 :(得分:1)

您可以将JSON对象设置为data.json,然后将data.keys.value设置为该JSON中的值数组:

var jsondata = [{
  "Name": "apple",
  "data": {
    "value": 1434,
  },
}, {
  "Name": "banana",
  "data": {
    "value": 342,
  }
}];

var chart = c3.generate({
  data: {
    json: jsondata,
    keys: {
      value: [
        "name", "data.value"
      ]
    },
    type: "scatter"
      //hide: true
  }
});

http://jsfiddle.net/aendrew/mz9ccbrc/

n.b。,你需要C3 v0.4.11(刚添加了keys.value的点语法),你的JSON对象需要是一个数组(目前它无效)。

如果要将两个数组从初始问题转换为JSON格式,请尝试以下方法:

d3.zip(jsondataName, jsondata)
.map((d) => Object({name: d[0][0], data: { value: d[1][0] } }));