japan.internet.com
japan.internet.com メンバーID
Twitter
Facebook
RSS
ピックアップ
2008年3月28日 10:00

PHP/SWF Chartsでデータをグラフ化する

著者W. Jason Gilmoreオリジナル版を読む海外海外発

はじめに

 四半期の売上、窓口担当者、利益幅の動向...そのほか何であれ、データは企業にとって活動の基礎となるものです。中間管理職のためにPowerPointプレゼンテーションを作成する新米社員から、有望な販売先を何とか獲得しようとする頑張り屋の販売担当者に至るまで、すべての従業員が種々の企業情報に簡単かつ便利にアクセスできることが求められます。最初の要件である「簡単さ」は、インターネットによって既に解決されています。今日、企業データには事実上どこからでもアクセスできます。会社のイントラネットで、ホテルのワイヤレスネットワークを介してノートパソコンから、あるいは携帯電話を使ってタクシーの中からでもアクセスできます。しかし、2番目の要件である「便利さ」は、それほど単純ではありません。

 便利なデータアクセスという要件は、なかなか厄介な問題です。というのも、生のデータを提供しただけではほとんど役に立たないからです。データは首尾一貫したやり方で集計され操作されてはじめて利用できるようになります。ユーザーがデータのコンテキストを容易に把握し、大局的な観点から理解できるようにしなければなりません。そのための最もうまいアプローチの1つは、データを視覚化する方法をユーザーに提供することです。この場合、たいていはスプレッドシートまたはグラフ作成機能(あるいは両方の組み合わせ)が使われます。しかし、データの書式化にかかわる退屈な作業からユーザーを解放してあげたいと思ったら、どんな方法を使用すればよいのでしょうか。

 このチュートリアルでは、PHPおよびFlashでグラフを作成するための強力なソリューションである「PHP/SWF Charts」を紹介します。PHP/SWF Chartsは多様なグラフ形式をサポートしており、横棒グラフ、ローソク足グラフ、3次元の縦棒グラフ、円グラフ、3次元の円グラフ、散布図、極グラフ、コンポジットグラフなどがあります。具体例については、maani.usのPHP/SWF Chartsギャラリーを参照してください。本稿の例では棒グラフを使用していますが、PHP/SWF Chartsを使用すれば単純でも非常に見映えのよい棒グラフを生成できることがわかるはずです。

 厳密にはオープンソースと言えませんが、それでも無料バージョンの使用および配布が可能です。有料バージョンもあります。有料バージョンでは、サポートなど、無料バージョンにない特典が加わります。ライセンスオプションの詳細については、PHP/SWF Chartsの公式サイトを参照してください。

PHP/SWF Chartsのインストール

 PHP/SWF Chartsのインストールは簡単です。まず公式Webサイトに行き、最新バージョンをダウンロードします(ダウンロードページ)。3種類の形式(TAR、ZIP、SIT)が用意されているので、自分のオペレーティングシステム(それぞれUnix/Linux、Windows、OS X)に合ったアーカイブ形式を選べます。

 次に、ダウンロードしたものをWebサーバーのルートディレクトリ内のどこかのディレクトリ(たとえば、/usr/local/apache/htdocs/charting/)に展開します。それだけです。これでPHP/SWF Chartsを使用する準備ができました。

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()関数を呼び出して、作成した配列を渡すことです。

barchart.php
<?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)を作成します。

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 売上データを縦棒グラフで表示

 グラフを横棒グラフにしたければ、barchart.phpの配列の後に次の行を追加するだけで済みます。

$chart['chart_type'] = "bar";

 barchart-output.phpをもう一度実行すると、次のグラフが表示されます。

図2 売上データを横棒グラフで表示
図2 売上データを横棒グラフで表示

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 立体化でグラフの見映えが向上

グラフの自動更新

 期末に近づくと、社員たちの目はグラフに釘付けになります。社員たちが絶えずグラフにアクセスすることで業務が停滞するのを避けるため、セールスマネージャはグラフをオフィスの壁に投影することにしました。しかしそのままでは、誰かが定期的にブラウザ表示を更新しない限り、グラフは更新されません。この問題を解決するには、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のリファレンスを参照してください。この短いチュートリアルが読者自身のアプリケーションにグラフ機能を組み込むための参考になれば幸いです。

著者紹介

W. Jason Gilmore(W. Jason Gilmore)
IT Enlightenmentの共同創設者。ベストセラーとなった『Beginning PHP and MySQL 5: Novice to Professional, Second Edition』(Apress, 2006. 913pp)をはじめ、数点の著作がある。個人サイトはhttp://www.wjgilmore.com/。読者からの電子メールは大歓迎。メールの宛先はwjATwjgilmore.com。

プリンター用
記事を転送
この記事をクリップ!
厳選した九州のお野菜とお米をお届け
厳選した九州のお野菜とお米をお届け 野菜の木では、老舗料亭 沙羅の木が厳選した九州のお野菜とお米をお届けします。 毎週、隔週での定期のご購入も可能です。 入会費、年会費、送料、荷造手数料は無料です。
注目のトピックス
Copyright 2012 internet.com K.K. (Japan) All Rights Reserved.