如何在树形图图表

时间:2016-10-17 09:08:00

标签: javascript charts google-visualization treemap

我有一个树形图图表代码,这是工作,根据我的期望显示树形图。但价值仍然在硬编码上。我想循环这与数据库中的现有数据一样多。使用for,while但是我运行它,我收到错误

  

未捕获的SyntaxError:

的意外标记

这是我的代码

function drawChart(){
                    var data = google.visualization.arrayToDataTable([
                        ['Location', 'Parent' , 'Size', 'Color'],
                        ['Cabang',null,0,0],
                        [
                        for (i=0; i<0; i++){
                            console.log([dataFromPHP[i].provinsi,'Cabang',0,0],);
                        ],

                        [
                        for (j=0; j<0; j++){
                            console.log([dataFromPHP[j].kode_sales ,dataFromPHP[j].provinsi ,dataFromPHP[j].gaji ,dataFromPHP[j].count],);
                        ], ]);

这是我的工作代码

function drawChart(){
                    var data = google.visualization.arrayToDataTable([
                        ['Location', 'Parent' , 'Size', 'Color'],
                        ['Cabang',null,0,0],
                        [dataFromPHP[0].provinsi,'Cabang',0,0],
                        [dataFromPHP[1].provinsi,'Cabang',0,0],
                        [dataFromPHP[2].provinsi,'Cabang',0,0],
                        [dataFromPHP[0].kode_sales ,dataFromPHP[0].provinsi ,3 ,dataFromPHP[0].count],
                        [dataFromPHP[1].kode_sales ,dataFromPHP[1].provinsi ,1 ,dataFromPHP[1].count],
                        [dataFromPHP[2].kode_sales ,dataFromPHP[2].provinsi ,1 ,dataFromPHP[2].count], ]);

如何以Treemap格式制作循环值?提前致谢

这是我的JSON文件

[
{
    "provinsi": "Jawa Tengah",
    "pulau": "Jawa",
    "kode_sales": "SAL04",
    "gaji": "913",
    "count": "3"
},
{
    "provinsi": "Jawa Barat",
    "pulau": "Jawa",
    "kode_sales": "CLI02",
    "gaji": "500",
    "count": "1"
},
{
    "provinsi": "Jawa Timur",
    "pulau": "Jawa",
    "kode_sales": "SAL99",
    "gaji": "125",
    "count": "1"
}

1 个答案:

答案 0 :(得分:0)

首先,您必须在开始另一个

之前完成一个陈述

for

的中间不能有arrayToDataTable循环

至于for循环,这将永远不会运行 - &gt; for (i=0; i<0; i++){

i0开始,应该与i < 0一样长 - 所以它会立即结束

试试这个......

var data = google.visualization.arrayToDataTable([
  ['Location', 'Parent' , 'Size', 'Color'],
  ['Cabang', null, 0, 0]
]);

for (var i = 0; i < dataFromPHP.length; i++) {
  data.addRow([dataFromPHP[i].provinsi, 'Cabang', 0, 0]);
}

for (var i = 0; i < dataFromPHP.length; i++) {
  data.addRow([dataFromPHP[i].kode_sales, dataFromPHP[i].provinsi, dataFromPHP[i].gaji, dataFromPHP[i].count]);
}

编辑

而不是使用arrayToDataTable,明确定义DataTable 确保使用正确的类型

var data = new google.visualization.DataTable();
data.addColumn('string', 'Location');
data.addColumn('string', 'Parent');
data.addColumn('number', 'Size');
data.addColumn('number', 'Color');

data.addRow(['Cabang', null, 0, 0]);

for (var i = 0; i < dataFromPHP.length; i++) {
  data.addRow([dataFromPHP[i].provinsi, 'Cabang', 0, 0]);
}

for (var i = 0; i < dataFromPHP.length; i++) {
  data.addRow([dataFromPHP[i].kode_sales, dataFromPHP[i].provinsi, dataFromPHP[i].gaji, dataFromPHP[i].count]);
}

编辑2

因为数字在JSON中存储为字符串,所以 用parseFloat(浮动精度)或parseInt(整数)

包装数字

e.g。 - &GT; parseFloat(dataFromPHP[i].gaji)

for (var i = 0; i < dataFromPHP.length; i++) {
  data.addRow([dataFromPHP[i].kode_sales, dataFromPHP[i].provinsi, parseFloat(dataFromPHP[i].gaji), parseInt(dataFromPHP[i].count)]);
}