javascript - Javascript 中的 C3 图表 json 数据格式

标签 javascript jquery html c3.js

我在一个简单的 html 页面中使用 C3 圆环图。当我使用以下代码时,图表加载没有错误:

json : [{"Total Participants":4825},{"Male":3019},{"Female":1806},],
keys : {
   value : ['Total Participants', 'Male', 'Female' ],
}

但是我必须使用 JavaScript 为“json”和“keys”构建输入,这样它就不是静态的。请注意,我不想在这里使用ajax。我只想构建输入

[{"Total Participants":4825},{"Male":3019},{"Female":1806},]

['Total Participants', 'Male', 'Female' ]

使用 JavaScript。这是我尝试过的代码,但不起作用。

var keysChart = '[';
var chartJsonData = '[';

for (var i = 0; i < data.length; i++) {
    keysChart += data[i].title;
    if(i < data.length - 1) keysChart += ',';
    chartJsonData += '{';
        chartJsonData += data[i].title;
        chartJsonData += ':';
        chartJsonData += data[i].value;
        chartJsonData += '}';
        chartJsonData += ','
}

chartJsonData += ']';
keysChart += ']';

上面代码的输出看起来与我想要的类似,但它不起作用。我相信可能存在一些格式问题。

我按以下方式使用生成的数据:

json : chartJsonData,
keys : {
    value : keysChart,
}

控制台出现以下错误:

Uncaught TypeError: a.forEach is not a function

最佳答案

var arrData = [];
var keysForChart = [];

var jsJsonObj = new Object();

for (var it = 0; it < data.length; it++) { // data from an external json file. 
   keysForChart.push(data[it].title);
   jsJsonObj[data[it].title] = data[it].value;
}

arrData.push(jsJsonObj);

然后使用以下代码生成图表

c3.generate({
  bindto : '#chart',
  data : {
    json : arrData,
    keys : {
      value : keysForChart
    },
    type : 'bar'
  },
  .....
});

关于javascript - Javascript 中的 C3 图表 json 数据格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38520656/

相关文章:

javascript - Angular 2 悬停事件

javascript - jQuery scrollTo 但在两者之间变慢

javascript - 如何将 javascript 变量添加到 HTML 图像 src 标记

Javascript循环创建多个相互附加的div

PHP如何使用类调用数据库中的所有值

javascript - 如何为 Google Charts 的 TermCloud 图表提供自定义颜色?

javascript - 我如何应对网络存储的大小限制?

javascript - 对从一个 Angular 到另一个 Angular 的对 Angular 线进行动画处理

php - 如何中心对齐来自数据库的 'n' 图像数量

javascript - 如何从外部服务器导入数据