如何动态生成Google图表API数据

4
我将尝试使用Google的API和JSON创建一张折线图。
固定编码,这张图表可以正常工作:
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);

  function drawChart() {

    var data = google.visualization.arrayToDataTable([
      ['Date', 'Sales'],
      ['Jun 25',  12.25],
      ['Jun 26',  8.00],
      ['Jun 27',  20.50]
      ['Jun 28',  12.75]
    ]);

    var options = {

    };

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data, options);
  }

</script>

然而,尝试使用JSON填充它时,我无法使其工作:
<?php

$data = array();
$data["Date"] = "Sales";
$data["Jun 25"] = "12.25";
$data["Jun 26"] = "8.00";
$data["Jun 27"] = "20.50";
$data["Jun 28"] = "12.75";
$data = json_encode($data);

?>

<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);

  function drawChart() {

    var data = google.visualization.arrayToDataTable(<?php echo $data; ?>);

    var options = {

    };

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data, options);
  }

</script>

我显然没有正确编码数组。Google在此处提供了一个有关如何使用JSON数据填充图表的示例页面:https://developers.google.com/chart/interactive/docs/php_example
但是,我找不到任何关于如何设置这样一个简单线条图的JSON数据的示例。
3个回答

13

你已经接近正确答案了。

$data = array( 
             array('Date', 'Sales'),  
             array('June 25', 12.25),  
             array('June 26', 8.00) 
);

json_encode($data);

输出内容

[["Date","Sales"],["June 25",12.25],["June 26",8]]

点击查看示例。


@LucasJota 使用 google.visualization.arrayToDataTable 而不是 google.visualization.DataTable。 - Ehsan

0
while($fetch = sqlsrv_fetch_array( $result, SQLSRV_FETCH_BOTH))
{
$grid[$count]= $fetch['Hour'];
$grid1[$count]=$fetch['Revenue'];
$data[$count]=array($fetch['Hour'],$fetch['Revenue']);
$count++;   
}
$num=$count;
    $data[0] = array('Hours','Revenue');        
    for ($i=0; $i<($num+1); $i++)
    {

        $data[$i]=(array('c' => array(array('v' => (string)$grid[$i]), array('v' =>(int)($grid1[$i]) ), ) ));
    }   

$sample=array(array('type' => 'string', 'label' => 'date'),array('type' => 'number', 'label' => 'Amount'));
$table['cols'] = $sample;
$table['rows'] = $data;
echo (json_encode($table ));

这对我有用,如果您按照以下方式格式化您的json,它肯定会起作用


0

Josh已经提供了正确的答案。但是如果您想使用google.visualization.DataTable而不是google.visualization.arrayToDataTable,首先可以单独添加列,然后添加json编码的php数组:

var data = new google.visualization.DataTable();
    data.addColumn('string', 'Date');
    data.addColumn('string', 'Sales');
    data.addRows(<?php echo $data; ?>);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接