SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

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

Flashで表示するリッチなグラフ

  • X ポスト
  • このエントリーをはてなブックマークに追加

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のリファレンスを参照してください。この短いチュートリアルが読者自身のアプリケーションにグラフ機能を組み込むための参考になれば幸いです。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

W. Jason Gilmore(W. Jason Gilmore)

オハイオ州コロンバスに本社を置く出版・コンサルティング企業であるW.J. Gilmore, LLCの創設者。最新のプロジェクトに、PHP言語の学習用ワンストップショップEasyPHPWebsites.comがある。以前はApressのオープンソース系編集者として60冊を超える書籍の出版に携わり、オープンソース製品に関する優れた出版物の刊行に貢献。著作も多く、ベストセラーになった『Beginning PHP and MySQL: From Novice to Professional』(現在は第3版)、『Beginning PHP and PostgreSQL: From Novice to Professional』、『Beginning PHP and Oracle: From Novice to Professional』などがある。年1回の開発者向けカンファレンス「CodeMash」を主催する非営利組織CodeMashの共同創設者。2008 MySQL Conferenceの発表者選考委員会のメンバーも務めた。Developer.com、Linux Magazine、TechTargetなどの著名なサイトに執筆したチュートリアルや記事の数は100以上にのぼる。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2118 2008/02/19 13:55

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング