【问题标题】:How to populate Google chart API dynamically如何动态填充 Google 图表 API
【发布时间】:2012-06-28 13:47:07
【问题描述】:

我正在尝试使用他们的 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>

我显然没有正确编码数组。谷歌有一个关于如何用 JSON 数据填充图表的示例页面:https://developers.google.com/chart/interactive/docs/php_example

但是,我找不到任何关于如何使用这样的简单折线图设置 JSON 数据的示例。

【问题讨论】:

    标签: php json api


    【解决方案1】:

    你已经接近了。

    $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.

    【讨论】:

    • @LucasJota 使用 google.visualization.arrayToDataTable 而不是 google.visualization.DataTable
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      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,它肯定会工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-21
        • 1970-01-01
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-04
        • 2023-03-10
        相关资源
        最近更新 更多