Php 谷歌可视化API-多折线图
我从数据库中提取记录后创建了一个数组。该数组类似于:Php 谷歌可视化API-多折线图,php,google-visualization,linechart,Php,Google Visualization,Linechart,我从数据库中提取记录后创建了一个数组。该数组类似于: // $xyz array Array ( [f30] => Array ( [December 2012] => 71 [November 2012] => 70 [October 2012] => 66 ) [f32] => Array (
// $xyz array
Array
(
[f30] => Array
(
[December 2012] => 71
[November 2012] => 70
[October 2012] => 66
)
[f32] => Array
(
[December 2012] => 85
[November 2012] => 83
[October 2012] => 81
)
)
如果是单线图,我可以毫不费力地画出来。然而,当我尝试绘制多折线图时,我遇到了很多问题。下面是我试图绘制数据的代码:
PHP
JS
load('visualization','1',{'packages':['corechart']});
setOnLoadCallback(drawChart);
函数绘图图(){
var data=new google.visualization.DataTable();
变量选项={
标题:“一些标题”,
is3D:'正确',
宽度:800,
身高:600
};
var chart=newgoogle.visualization.LineChart(document.getElementById('divID');
图表绘制(数据、选项);
}
我通过改变$temp
、$rows
和$table['rows']
数组的位置尝试了各种排列和组合,但我似乎无法在一个图形中绘制两条线。我可能弄乱了阵列的位置
我能得到的最接近的结果如下:
但我的预期产出是这样的
f30
和f31
取代销售
和费用
和10月
,11月
和12月
取代2004年
,2005年
,2006年
,2007年
我自己想出来了。天哪!这真是一种解脱。我只需要有一个这样格式的数组:
Array
(
[December 2012] => Array
(
[0] => 71
[1] => 85
)
[November 2012] => Array
(
[0] => 70
[1] => 83
)
[October 2012] => Array
(
[0] => 66
[1] => 81
)
)
剩下的是
foreach
循环中的一个小修改,瞧!完成了。您还可以为每个f[30]和f[31]创建一个数据表
然后呢
这基本上是将两个图表从关键列连接起来,即您想要一个包含3列的表:a列有日期(以日期格式,例如
新日期(2012,9,1)
,因此它们的顺序正确)。您可以按原样使用字符串,但需要注意顺序。B列具有F30的值。列C具有F31的值。操纵您的数据,以这种方式结束,它将工作。我不确定您是如何将数组传递到datatable的,因此,除非您分享如何将其传递到google charts API,否则我无法更具体地说明。这就是@jmac的问题,我似乎不知道如何从数组中生成3列。您是如何创建数组的?您从数据库中获得的数据是什么?你真的没有办法把数据换成不同的格式吗?您可以在一个数组中创建一个数组,然后在每个数据点的子数组中循环(例如,2012年11月,然后是[70,83])。但是,没有办法用当前提供的信息给出具体的解决方案(内容太广泛,没有明确的意义,哪些事情你可以/不能更改)Ok。让我们忘掉数据库吧。假设我对值进行了硬编码,就像$xyz
数组包含的一样。我需要以什么形式转换$xyz
来绘制多折线图?我已经浏览了谷歌代码游乐场
,但它没有包含使用PHP数组的示例。@jmac不用担心。我想出来了。谢谢你的时间
<script type="text/javascript">
google.load('visualization', '1', {'packages':['corechart']});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable(<?=$jsonTable?>);
var options = {
title: 'Some title',
is3D: 'true',
width: 800,
height: 600
};
var chart = new google.visualization.LineChart(document.getElementById('divID'));
chart.draw(data, options);
}
</script>
Array
(
[December 2012] => Array
(
[0] => 71
[1] => 85
)
[November 2012] => Array
(
[0] => 70
[1] => 83
)
[October 2012] => Array
(
[0] => 66
[1] => 81
)
)