先直接用API畫個簡單的圓餅圖,
URL如下:
畫出來的結果如下圖:
圖1 |
詳細用法可參考官方說明文件:
http://code.google.com/intl/zh-TW/apis/chart/image/docs/gallery/pie_charts.html
由於我是要把自已分析好的各種數據做成各種圖表,如果每次要做圖,都要用這種方式搞一次,會讓我覺得很累,所以就先把Google Chart寫成一個基礎的Class, 之後再依據自已的需要針對各種圖表去繼承他。
以上面的例子,我只要先寫好一個GoogleChart.php的腳本,再像下面這樣寫,就可以做出上面的圖表(圖1)了。
include("GoogleChart.php");
$chart = new GooglePieChart(400,200);
$data = array(3,4,5);
$labels = array("標籤1","標籤2","標籤3");
$legends = array("圖例1","圖例2","圖例3");
$chart->setData($data,$labels,$legends);
$chart->draw();
雖然表面上看起來字是比較多,但實際上會比較容易理解,而且不管我的數據是什麼,我只要用1個陣列,就能產生出另外2個陣列來畫出我要的圖表,到時候也就差不多這幾行,另外一個好處就是,如果將來沒有其他特殊需求的話,以後就算過了很久,就算我都忘了Google API是長怎樣的了,但我只要看到上面那幾句,就能夠直接套用而不必再去爬文了。
GoogleChart.php程式如下,有需要的可以自已copy回去用:
class GoogleChart{
var $width,$height;
var $chart_type;
var $api_url;
var $parameters;
function GoogleChart($w,$h,$type,$url="http://chart.apis.google.com/chart"){
$this->parameters = array();
$this->width = $w;
$this->height = $h;
$this->chart_type = $type;
$this->api_url = $url;
$this->parameters['chs'] = $w."x".$h;
$this->parameters['cht'] = $type;
}
function draw(){
$url = $this->api_url;
$params = array();
foreach($this->parameters as $key => $value){
$params[] = "$key=$value";
}
$url .= "?".implode("&",$params);
header("Location: $url");
}
} //class GoogleChart
class GooglePieChart extends GoogleChart{
function GooglePieChart($w,$h,$type="p"){
parent::GoogleChart($w,$h,$type);
}
function setData($data,$labels=null,$legends=null){
$this->parameters['chd'] = "t:".implode(",",$data);
if($labels) $this->setLabels($labels);
if($legends) $this->setLegends($legends);
}
function setLabels($labels){
$this->parameters['chl'] = implode("|",$labels);
}
function setLegends($legends){
$this->parameters['chdl'] = implode("|",$legends);
}
} //class GooglePieChart extends: GoogleChart
class GooglePieChart3D extends GooglePieChart{
function GooglePieChart3D($w,$h){
parent::GooglePieChart($w,$h,"p3");
}
}
沒有留言:
張貼留言