|
JpGraph は PHP のライブラリの一種で、Excel のように簡単にグラフを作成できる。QPL 1.0 (Qt Free Licensee)ライセンスにしたがい、コミュニティや教育などの非営利目的での使用に限り無料で利用できる。 ぱふぅ家ホームページでは、JpGraph を使ってアクセス回数の推移などを表示している。 今回は、JpGraph を用い、日本の人口ピラミッドを表示させるプログラムを作ってみることにする。 |
サンプル・プログラム |
|
準備 |
|
|
まず、JpGraph を使うための準備をする。
JpGraph は、国内ではアシアル株式会社がサポートしており、同社のサイトからダウンロードできる。 解凍したら、PHP から利用できるディレクトリにコピーしておく。凡例やラベルに日本語を使う場合は、事前に日本語フォント(TrueType ファイル)を用意しておく必要がある。 これについても、アシアル社のサイトに詳しい説明がある。 |
|
データの準備 |
|
|
人口ピラミッドを描くために必要な日本の人口データは、総務省統計局のサイトからダウンロードできる。 Excel データとしてダウンロードできるので、テキストエディタを使って PHP の配列変数に取り込めるようにしておく。 |
|
解説:JpGraphの準備 |
|
|
0009: //JpGraph |
|
|
まず、関数 require_once を用いて JpGraphライブラリを読み込む。ディレクトリは、各自が JpGraph をインストールしている場所を指定すること。 "jpgraph.php" は共通ライブラリ。もう 1 つはグラフの種類によって読み込むライブラリが異なる。今回は棒グラフを用いるので "jpgraph_bar.php" を読み込む。 詳細は、アシアル社のサイトからダウンロードした圧縮ファイルに含まれる日本語ドキュメント(HTML 形式)を参照のこと。 |
解説:データの準備 |
|
|
0023: //年齢階層別日本人人口推計値(平成17年4月1日確定値) |
|
|
総務省からダウンロードしたデータは、年齢階層を配列 $age に、男性人口を配列 $male に、女性人口を配列 $female に代入するようにしてある。
人口ピラミッドは、年齢階層が高い方が上になる。当初の配列の順序では逆になってしまうので、関数 array_reverse を使って配列の順序を逆転させておく。 人口ピラミッドを描くには、水平棒グラフを使う。 グラフの中央をゼロとして、右側が男性人口、左側が女性人口である。男性人口は正数、女性人口は負数として水平グラフを描けば、人口ピラミッドとなるはずである。 そこで、あらかじめ女性人口を負数にしておく。 |
解説:グラフの作成・描画 |
|
|
0037: //JpGraphでグラフを生成する |
|
|
JpGraph は、グラフを Graph オブジェクトとして扱う。 まず、新しいグラフオブジェクト $graph を生成する。ここではグラフ描画領域を横 400 ドット×縦500 ドットとしている。 JpGraph では水平棒グラフは扱えない。そこで、通常の棒グラフを描いたグラフ領域全体をメソッド Set90AndMargin により 90 度横に倒すことで実現する。 この際、描画領域境界からのマージン($top, $bottom, $left, $right)を設定しておく必要がある。 男性と女性は、別々のグラフとして描く。まず男性のグラフである。 BarPlot メソッドで棒グラフ・オブジェクトを生成する。棒グラフの間隔はゼロにする。 メソッド SetLegend はグラフの凡例を定義する。 ここでは日本語を使っているが、TrueType フォントを使うので UTF-8 でエンコードしてやる必要がある。女性のグラフも同様である。 メソッド Add を使い、グラフオブジェクト $graph に男性のグラフと女性のグラフを結合する。グラフのタイトルや軸名称も設定する。 日本語フォントファイルを導入し、FF_PGOTHIC に対して日本語フォントを対応づけていれば、日本語表示が可能であるはずである。ただし、日本語の指定は UTF-8 コードで行うこと。これは、「PHP で TrueType フォントを利用する」で述べたのと同じ理由による。 最後に、Storoke メソッドを使って画面にグラフを表示する。 |
参考書籍 |
|
|
|
参考サイト |
|
|
|
|
|
|
2005年09月27日 作成
2009年11月11日 更新
Copyright by studio pahoo, (C)2009
(※)本ページはリンクフリーですが、複製・転載時にはご一報ください。 ★本ページへのご意見・ご質問・お便りは、ここをクリックしてください。 |