[英]How to populate google chart with this dynamic array?
I want to learn how to populate a google chart from an array that is based on a sql query. 我想学习如何从基于SQL查询的数组中填充Google图表。 The array can contain different number of results depending on what day it is run.
该数组可以包含不同数量的结果,具体取决于运行的日期。 I created the chart with manual input data so I know it works but when I try to read data from the array I don't succeed.
我使用手动输入数据创建了图表,因此我知道它可以工作,但是当我尝试从数组中读取数据时,我不会成功。
This is the array 这是数组
Array
(
[0] => Array
(
[0] => Mobillyftar
[PRODUCT_GROUP] => Mobillyftar
[1] => 20
[WEEK] => 20
[2] => 54
[QTY] => 54
)
[1] => Array
(
[0] => Selar
[PRODUCT_GROUP] => Selar
[1] => 20
[WEEK] => 20
[2] => 808
[QTY] => 808
)
[2] => Array
(
[0] => Taklyftar
[PRODUCT_GROUP] => Taklyftar
[1] => 20
[WEEK] => 20
[2] => 6
[QTY] => 6
)
[3] => Array
(
[0] => Tillb & res
[PRODUCT_GROUP] => Tillb & res
[1] => 20
[WEEK] => 20
[2] => 1159
[QTY] => 1159
)
)
And here is my chart: 这是我的图表:
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {packages:['bar']});
google.charts.setOnLoadCallback(draw);
<?php
$variable = $producedPerProductgroupAndWeekArray;
echo "var array=".$variable.";";
?>
function draw() {
var data = new google.visualization.DataTable();
data.addColumn('string','week');
data.addColumn('number', 'qty');
for (idx=0;idx=array[1].lenght;idx++)
{
data.addRow([array[1][idx].week,Number(array[1][idx].qty)]);
<!--data.addRow([table[idx].week,Number(table[idx.value])]);-->
<!--data.addRow( [table[0][WEEK], Number(table[0][QTY]) ] );-->
}
var option = {
chart:{
title:"barchart",
},
bars:'vertical',
}
var chart = new google.charts.Bar(document.getElementById("bar"))
chart.draw(data,option);
}
</script>
<div id="bar" style="height:500px; width:900px;"></div>
recommend building the array in php, similar to following... 建议在php中构建数组,类似于以下内容...
$table = array();
$table['cols'] = array();
$table['cols'][] = array('label' => 'WEEK', 'type' => 'string');
$table['cols'][] = array('label' => 'Mobillyftar', 'type' => 'number');
$table['cols'][] = array('label' => 'Selar', 'type' => 'number');
$table['cols'][] = array('label' => 'Taklyftar', 'type' => 'number');
$table['cols'][] = array('label' => 'Tillb', 'type' => 'number');
$row = array();
$row[] = array('v' => '20');
$row[] = array('v' => 54);
$row[] = array('v' => 808);
$row[] = array('v' => 6);
$row[] = array('v' => 1159);
$table['rows'] = array('c' => $row);
which should result in the following json... 这应该导致以下json ...
{"cols":[
{"label":"WEEK","type":"string"},
{"label":"Mobillyftar","type":"number"},
{"label":"Selar","type":"number"},
{"label":"Taklyftar","type":"number"},
{"label":"Tillb","type":"number"}
],
"rows":[
{"c":[{"v":"20"},{"v":54},{"v":808},{"v":6},{"v":1159}]}
]}
which can then be used to create the data table directly... 然后可以用来直接创建数据表...
var data = new google.visualization.DataTable(jsonData);
see following working snippet... 请参阅以下工作片段...
google.charts.load('current', {packages:['bar']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var jsonData = { "cols":[ {"label":"WEEK","type":"string"}, {"label":"Mobillyftar","type":"number"}, {"label":"Selar","type":"number"}, {"label":"Taklyftar","type":"number"}, {"label":"Tillb","type":"number"} ], "rows":[ {"c":[{"v":"20"},{"v":54},{"v":808},{"v":6},{"v":1159}]} ] }; var data = new google.visualization.DataTable(jsonData); var chart = new google.charts.Bar(document.getElementById('chart_div')); chart.draw(data); }
<script src="https://www.gstatic.com/charts/loader.js"></script> <div id="chart_div"></div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.