PHPで日本語簡単グラフ生成
カテゴリー:PHP
PHPでフラッシュのグラフを作る「PHP/SWF Charts」
GIGAZINEに以前PHPでフラッシュグラフを作成するという記事が紹介されていて、
グラフを表示する機能を作る必要が出たので、紹介されているPHP / SWF Chartsを試してみることにしました。
チュートリアル通りにつくってみると案の定、日本語の表示の部分でつまってしまいました。
そこで検索してみると下のサイトにわかりやすく日本語がまとめられてたので参考にしました。
memo.xight.org-PHP/SWF Charts の利用
が、上のソースだと円グラフだと確かに表示されるんですが
グラフを形を"bar"だとか"column"など軸に日本語が出るようなタイプを選ぶと
その部分が表示されないところでハマっちゃいました。
下の画像の感じです。
営業成績が名前の部分が日本語なので表示されなくて匿名になっちゃいます。。。
これだとグラフだと一発で成績不良がわかっちゃう一番上の彼なんかは大喜びでしょうが
2番のがんばった人なんかが、やるせない気持ちになるとおもいます。
ということでどうやったら日本語が表示できるか調べてみました。
フォント変えてみたり、いろんなグラフの種類を試してみたりしましたが、、、
マニュアルのリファレンスにちゃんとありました。
http://www.maani.us/charts/index.php?menu=Reference
「axis_category」部分の値が表示されない部分に該当してるようです。
ということで以下のようにフォント指定
$chart ['axis_category'] = array( 'font' => "Sans Serif", );
すると、、、
ちゃんと軸部分の日本語も表示されるようになりました。
成績が伸び悩んでいたのは原君でした。
匿名営業成績なんてものなんかに期待しないでがんばってください。
(原君はテストデータのためにつくられた架空の人物なので彼のことを心配された心優しい方はご安心ください。)
今回のXMLを作成するPHPプログラムのソースは以下のとおりです。
include "charts.php";
$chart [ 'chart_type' ] = "Stacked bar";
$title = array("","山本","田中","山田","原");
$score["1"] = array("1月","5","1","3","1");
$score["2"] = array("2月","2","3","7","2");
$score["3"] = array("3月","3","6","5","1");
$chart [ 'chart_data' ]['0'] = $title;
$chart [ 'chart_data' ]['1'] = $score["1"];
$chart [ 'chart_data' ]['2'] = $score["2"];
$chart [ 'chart_data' ]['3'] = $score["3"];
$chart [ 'chart_value' ] = array(
'font' => "Sans Serif",
);
$chart [ 'legend_label' ] = array(
'font' => "Sans Serif",
);
$chart ['axis_category'] = array(
'font' => "Sans Serif",
);
$chart ['draw'] = array(
array(
'type' => 'text',
'font' => 'Sans Serif',
'x' => '0',
'y' => '-10',
'h_align' => "center",
'v_align' => "bottom",
'color' => "000000",
'size' => 14,
'bold' => true,
),
);
SendChartData($chart);
今回簡単なものをPHP / SWF Chartsで作成しましたが、ソースを見てわかるように、
日本語部分でハマった以外は恐ろしく簡単にできました。これなら複雑なものでもそんなに
時間をかけずにできると思います。
グラフをWebで表示する必要があるかたは是非一度お試しください。
name: いきのむし URL:
っていうか原くん、グラフにいないし!
可哀想すぎる!
いやぁ、架空の人物で本当に良かった……
2008-02-19 15:25:12