PHP/SWF Chartsの使用
PHP/SWF Chartsを使ってグラフを作成するためには、2つのスクリプトを作成する必要があります。最初のスクリプトは、もっぱらグラフを作成するためのものです。2番目のスクリプトは、そのグラフをブラウザ内に表示するためのものです。退屈そうな作業に見え、PHP/SWF Chartsの初心者は当惑するところですが、このアプローチによって、複雑なロジックと、Webページおよび対応するグラフの書式化に使われる表示マークアップとがきれいに分離されます。この効果はPHP/SWF Chartsの最初の棒グラフを作成するときに明らかになります。
棒グラフの作成
ある会社に優秀な販売チームがあって、販売担当者たちを競わせ、四半期の売上がトップになった人に海外旅行をプレゼントすることになったと考えてください。さらにプレッシャーをかけようとして、セールスマネージャは会社のイントラネットを通じて全社員が見られるリアルタイムのグラフを作成することにしました。PHP/SWF Chartsを使用すれば、売上実績を示す棒グラフを簡単に作成することができます。
PHP/SWF Chartsは配列を使って渡されたデータに基づいてグラフを作成するので、各販売担当者の実績を入れた多次元配列を作成できます。次のスクリプト(barchart.php)には、それ以外に必要な2つのタスクも含まれています。すなわち、charts.phpを取り込むことと、SendChartData()
関数を呼び出して、作成した配列を渡すことです。
<?php // Include the charts.php library include "charts.php"; // Create the array $chart['chart_data'] = array ( array ( "", "January", "February", "March" ), array ( "John Smith", 124198.42, 200088.34, 412128.99 ), array ( "Michael Rodgers", 119099.56, 247998.99, 476991.11 ) ); // Build the chart SendChartData($chart); ?>
次に、グラフを表示するスクリプト(barchart-output.php)を作成します。
<?php // Include the charts.php library include "charts.php"; // Display the chart echo InsertChart("charts.swf", "charts_library", "barchart.php", 400, 350); ?>
ブラウザ内でbarchart-output.phpを呼び出すと、次のグラフが表示されます。
![図1 売上データを縦棒グラフで表示 図1 売上データを縦棒グラフで表示](http://cz-cdn.shoeisha.jp/static/images/article/2118/PHPChart1.gif)
グラフを横棒グラフにしたければ、barchart.phpの配列の後に次の行を追加するだけで済みます。
$chart['chart_type'] = "bar";
barchart-output.phpをもう一度実行すると、次のグラフが表示されます。
![図2 売上データを横棒グラフで表示 図2 売上データを横棒グラフで表示](http://cz-cdn.shoeisha.jp/static/images/article/2118/PHPChart2.gif)
3次元の縦棒グラフの作成
棒グラフはすっきりしていますが、訴求力が少し弱いかもしれません。グラフを立体化すると、もっと見映えがよくなります。barchart.phpを修正して、グラフを3次元バージョンに変えてみましょう。
<?php include "charts.php"; $chart['chart_data'] = array ( array ( "", "January", "February", "March" ), array ( "John Smith", 124198.42, 200088.34, 412128.99 ), array ( "Michael Rodgers", 119099.56, 247998.99, 476991.11 ) ); // Set the chart type $chart['chart_type'] = "3d column"; // Determine how much the chart should be rotated both // horizontally and vertically $chart['chart_pref'] = array ( 'rotation_x'=>25, 'rotation_y'=>15 ); // Set the chart offset, width and height, and shading $chart['chart_rect'] = array ( 'x'=>50, 'y'=>50, 'width'=>300, 'height'=>250, 'positive_alpha'=>55, 'negative_alpha'=>25 ); SendChartData($chart); ?>
barchart-output.phpをもう一度ロードすると、次のグラフが表示されます。
![図3 立体化でグラフの見映えが向上 図3 立体化でグラフの見映えが向上](http://cz-cdn.shoeisha.jp/static/images/article/2118/PHPChart3.gif)
グラフの自動更新
期末に近づくと、社員たちの目はグラフに釘付けになります。社員たちが絶えずグラフにアクセスすることで業務が停滞するのを避けるため、セールスマネージャはグラフをオフィスの壁に投影することにしました。しかしそのままでは、誰かが定期的にブラウザ表示を更新しない限り、グラフは更新されません。この問題を解決するには、PHP/SWF Chartsのライブ更新機能を使用して、指定した時間間隔でグラフが自動的に更新されるようにします。たとえば、barchart-output.phpを15秒ごとに更新したければ、barchart.phpに次の配列属性を追加します。
$chart['live_update'] = array ( 'url'=>"barchart.php?time=".time(), 'delay'=>15);
これが期待どおりに行われることを検証するため、グラフを表示した後に、いずれかの配列値を元の値とは大きく異なる値に変更し、スクリプトを保存してみましょう。15秒経つと、グラフに新しい情報が表示されるはずです。
まとめ
PHP/SWF Chartsは非常に強力なグラフ作成ライブラリであり、本稿ではPHP/SWF Chartsの能力のほんの一端を紹介したにすぎません。詳細については、PHP/SWF Chartsのリファレンスを参照してください。この短いチュートリアルが読者自身のアプリケーションにグラフ機能を組み込むための参考になれば幸いです。