如何动态填充Google图表API

时间:2012-06-28 13:47:08

标签: php json api

我正在尝试使用他们的API和JSON创建Google折线图。

硬编码,此图表有效:

<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数据的示例。

2 个答案:

答案 0 :(得分: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]]

See it in action.

答案 1 :(得分:0)

乔希已经提供了正确的答案。但是如果你想使用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; ?>);