好久沒更新了,因為鼻囊腫復發讓我生不如死、無心工作,決定來提早準備這個月的心得(痛打)
這次來玩Open Source的繪圖Class - Open Flash Chart
OpenFlashChart是我目前接觸過算很容易上手的圖表繪製Class了,目前更新到OpenFlashChart2,官網上提供的SourceCode也已經是2的版本,不過基於某些原因今天飯粒還是舊版的SourceCode;新舊版本引用的方式及部分檔名都不一樣,新版的Demo下次有空再寫。
舊版Source Code下載:OpenFlashChart_1.tgz (582K)
Demo Page:點我看飯粒
呈現頁面:Chart.php
<?
//引用Open Flash Chart,假設我把OFC的源碼檔案放在網站根目錄下的Inc資料夾內...
include_once('Inc/open-flash/php-ofc-library/open_flash_chart_object.php');
//open_flash_chart_object(寬,高,資料源,false,函式引用路徑(非必填))
//繪製圖表---Pie Chart
open_flash_chart_object(300,300,'Chart_Data.php?type=Pie',false,'Inc/open-flash/php-ofc-library/');
//繪製圖表---Bar Chart
open_flash_chart_object(350,300,'Chart_Data.php?type=Bar',false,'Inc/open-flash/php-ofc-library/');
?>
資料處理頁面:Chart_Data.php
<?
include_once( 'Inc/open-flash/php-ofc-library/open-flash-chart.php' );
$g = new graph();
switch($_GET['type']){
case 'Pie':
//產生統計資料(這邊不要抄不要抄不要抄!!!)
$getvalue->clearsession();
$query = "SELECT count(DT_Name) FROM Data_Table WHERE DT_Level = '80'";
$getvalue->select($query);
$ClassCountArr = $getvalue->getallrows();
$L1Count = $ClassCountArr[0]['count(DT_Name)'];
//$L2Count,$L3Count,$L4Count產生方式類似;省略...
//產出資料陣列及各項資料所對應的標題陣列
$CountData = array($L1Count,$L2Count,$L3Count,$L4Count);
$NameData = array('80級','79-60級','59-30級','30級以下');
//Pie Chart設定 pie(色彩濃度(越高越深),隔線顏色,字體設定)
$g->pie(70,'#505050','{font-size: 12px; color: #404040;');
//餅的內容 pie(值,標題)
$g->pie_values($CountData,$NameData);
//值塊的顏色陣列,裡面的顏色會輪流填到餅內;這裡只用了紫色和白色兩種
$g->pie_slice_colours( array('#9933CC','#FFFFFF') );
//滑鼠移到值塊時的顯示訊息,#val#代表該值塊的值
$g->set_tool_tip( '#val#人' );
//圖表標題及標題字型設定
$g->title( '等級分佈', '{font-size:12px; color: #d01f3c}' );
break;
case 'Bar':
//柱狀圖設定(柱條顏色濃度,柱條顏色,柱條框線顏色)
$bar = new bar_outline( 50, '#9933CC', '#8010A0' );
//柱條標註訊息及字體大小
$bar->key( '數量', 10 );
//產生統計資料(這邊不要抄不要抄不要抄!!!)
for($i=1;$i<7;$i++){
$getvalue->clearsession();
$query="SELECT count(DT_Name) FROM Data_Table,Race_Option WHERE R_EN = DT_Race AND R_ID = '".$i."'";
$getvalue->select($query);
$ClassCountArr = $getvalue->getallrows();
$ClassCount = $ClassCountArr[0]['count(DT_Name)'];
if($ClassCount != 0){
$getvalue->clearsession();
$query = "SELECT R_TW FROM Data_Table,Race_Option WHERE R_ID = '".$i."'";
$getvalue->select($query);
$ClassName = $getvalue->getallrows();
//產出資料陣列及各項資料所對應的標題陣列
$bar->data[$i-1] = $ClassCount;
$NameData[$i-1] = $ClassName[0]['R_TW'];
}
}
//圖表標題及字型
$g->title( '種族人數統計', '{font-size:12px; color: #d01f3c}' );
//設定資料陣列
$g->data_sets[] = $bar;
//設定X軸標題陣列
$g->set_x_labels( $NameData );
//設定X軸字體大小、顏色、字體顯示方式(0:水平顯示|1:垂直顯示|2:傾斜45度顯示)、字體顯示
//間隔(設0則每個都顯示、如果設1則每隔一個顯示一次;依此類推)
$g->set_x_label_style( 12, '#9933CC', 0, 0 );
//Y軸最大值
$g->set_y_max( 6 );
//Y軸間隔數
$g->y_label_steps( 6 );
//Y軸訊息、字體大小、字體設定
$g->set_y_legend( '人數', 12, '#736AFF' );
}
//印出資料供Chart.php擷取
echo $g->render();
?>