amchartsの続きですがw
http://dev.neoinspire.net/archives/58
で紹介した amcharts を結構使いまくっていて、
ついでにと簡単に使えるクラスを作ったので上げときます。
追記:200711/07
改良してる方がいらっしゃったので一緒に載せておきます
http://d.hatena.ne.jp/pirokyun/20071104/1194161217#c
使い方
*PHP部分
1:amchartsをダウンロードしてアップする。
2:Class.CreateGraph.phpをインクルードする。
3:グラフ用の配列を作る
->キー値がそのまま属性に、データがそのままデータになります。
例:$array[‘japan’]=”5″
$array[‘america’]=”5″
なら japan が5(50%) america が5(50%)でグラフを作ります。
4:new して終わり。
以下例:
$ar[‘test1’] = 1;
$ar[‘test2’] = 2;
$ar[‘test3’] = 5;
$ar[‘test4’] = 10;
$graph = new CreateGraph($ar);
//test1=5.56% test2=11.11% test3=27.78% test4=55.56% となります。
*HTML部分
amcharts をインクルード
<script type=’text/javascript’ src=’./ampie/swfobject.js’></script>
以上
その他
必須な引数は第一引数のグラフ作成用・データのみです。
後はこんなかんじ
var $filename; //データXMLのファイル名を指定
var $foldername; //データXMLの入ってるフォルダ名を指定
var $width; //グラフの幅を指定
var $height; //グラフの高さを指定
var $setting; //セッティングファイルの名前を指定
全部やるとこんなかんじ。
$graph = new CreateGraph($array,”./ampie/”,”array.xml”,”400″,”300″,”./ampie/ampie_settings.xml”);
あと注意点としては元のflashファイルがUTF-8らしくて
UTF-8以外では動きません。
なのでPHPファイルもUTF-8で作ってください。
ファイルはこちら
Class.CreateGraph.php
もしくは以下コピペしてUTF-8で保存(全角スペースになってるので注意)
Class CreateGraph{
var $array; //Graph Data
var $filename; //Xml File Name
var $foldername; //XML Folder Name
var $width; //Graph Width
var $height; //Graph height
var $setting; //Graph Setting File/*
Construct
*/
function CreateGraph($array,$foldername=’./ampie/’,$filename=’array.xml’,$width=”400″,$height=”300″,$setting=”./ampie/ampie_settings.xml”){
$this->array = $array;
$this->filename = $filename;
$this->foldername = $foldername;
$this->width = $width;
$this->height = $height;
$this->setting = $setting;
$this->_ViewGraph();
$this->_PrintOut();
}
/*
Create Xml Data
*/
function _ViewGraph(){
$xml = ‘‘; ‘;
foreach($this->array as $key=>$value){
$xml.= ‘‘.$value.’ ‘;
}
$xml .= ‘
$write = $this->_file_put_contents($this->foldername.$this->filename,$xml);
}
/*
Print html&javascript codes
*/
function _PrintOut(){
print ”
<script type=’text/javascript’>
window.onload=function(){
var so = new SWFObject(‘”.$this->foldername.”ampie.swf’, ‘ampie’, ‘”.$this->width.”‘, ‘”.$this->height.”‘, ‘8’);
so.addVariable(‘path’, ‘ampie/’);
so.addVariable(‘settings_file’, escape(‘”.$this->setting.”‘));
so.addVariable(‘data_file’, escape(‘”.$this->foldername.$this->filename.”‘));
so.write(‘”.$this->filename.”‘);
}
</script>
<div id='”.$this->filename.”‘>
<strong>You need to upgrade your Flash Player</strong>
</div>
”;
}/*
Create Xml Files
*/
function _file_put_contents($fileName, $data) {
$res = fopen($fileName, ‘w+b’);
if($res){
$write = fwrite($res, $data);
if($write === false){
return false;
}else{
return $write;
}
}
}
}