2009年7月17日

在PHP中繪製圓餅圖(pie chart)


找了好多網站,發現這個網站所提供的程式碼最簡單,還能產生3D的圓餅,小而美。

http://www.peters1.dk/webtools/php/lagkage.php?sprog=en




只要把作者所提供的SCRIPT程式碼,存成一個PHP的檔案,如CHART.PHP。再利用下面的程式碼就可以產生一個圓餅圖了。

不過如果要顯示中文,必須修改原來的程式碼,將中文字轉成UTF-8的編碼,才能顯示。

1.首先加入BIG5轉UTF-8的Function:

function big52utf8($big5str) {
$blen = strlen($big5str);
$utf8str = "";
for($i=0; $i<$blen; $i++) {
$sbit = ord(substr($big5str, $i, 1));
if ($sbit < 129) {
$utf8str.=substr($big5str,$i,1);
}elseif ($sbit > 128 && $sbit < 255) {
$new_word = iconv("BIG5", "UTF-8", substr($big5str,$i,2));
$utf8str.=($new_word=="")?"?":$new_word;
$i++;
}
}
return $utf8str;
}

2.將
if ($show_text) $label_output = $label_output.$label[$i].' ';
改成
if ($show_text) $label_output = $label_output.' '.big52utf8($label[$i]).' ';

3.將
imagestring($img,'2',$width+20,$label_place,$label_output,colorHex($img, $text_color));
改成
$font_file = "uming.ttf";
ImageTTFText($img, 10, 0, $width+20, $label_place+10, colorHex($img, $text_color), $font_file, $label_output);

這樣就能顯示中文了。你還可以加入一些文字說明圓餅圖的主旨是要表達什麼樣的統計數據。