4

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 データをセットアップする方法の例は見つかりませんでした。

4

3 に答える 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]]

実際に見てください。

于 2012-06-28T13:52:03.897 に答える
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をこのようにフォーマットすると、間違いなく機能します

于 2015-08-27T05:39:42.820 に答える
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; ?>);
于 2014-06-28T07:21:15.423 に答える