今天给大家分享一个 flash 动画效果饼状地区分布图。用过流量统计的朋友都知道,流量统计中的地域分布状图很给力,当鼠标移动到某个区域,那个区域就会自动分离。正如下面效果图片所示:

本文所用到的数据表及插件下载地址: http://www.jb100.net/html/content-28-373-1.html
从以上地址下载所需要的资料后下,将数据表导入数据库,将charts文件放到public文件夹下。
下面废话少说就直接上代码了 ,PHP代码:
public function fenbu(){
$this->checkuser('stats_dq');
$end_date =strtotime(date('Y-m-d',time()));
$start_date = $end_date-31536000;
$area_xml = "<graph caption='地区分布统计' shownames='1' showvalues='1' decimalPrecision='2' outCnvBaseFontSize='13' baseFontSize='13' pieYScale='45' pieBorderAlpha='40' pieFillAlpha='70' pieSliceDepth='15' pieRadius='100' bgAngle='460'>";
$sql = "SELECT COUNT(*) AS access_count, area FROM ja_stats " .
" WHERE access_time >= '$start_date' AND access_time < " .($end_date + 86400).
" GROUP BY area ORDER BY access_count DESC LIMIT 20";
$res = M('stats')->query($sql);
$key=0;
foreach ($res as $val){
$area = empty($val['area']) ? 'unknow' : $val['area'];
$area_xml .= "<set name='$area' value='$val[access_count]' color='" .$this->chart_color($key). "' />";
$key++;
}
$area_xml .= '</graph>';
$from_xml = "<graph caption='来源网站统计' shownames='1' showvalues='1' decimalPrecision='2' outCnvBaseFontSize='12' baseFontSize='12' pieYScale='45' pieBorderAlpha='40' pieFillAlpha='70' pieSliceDepth='15' pieRadius='100' bgAngle='460'>";
$sql = "SELECT COUNT(*) AS access_count, source_url FROM ja_stats " .
" WHERE access_time >= '$start_date' AND access_time <= " .($end_date + 86400).
" GROUP BY source_url ORDER BY access_count DESC LIMIT 20";
$res = M('stats')->query($sql);
$key=0;
foreach ($res as $val){
$from = empty($val['source_url']) ? '直接输入网址' : $val['source_url'];
$from_xml .= "<set name='".str_replace(array('http://', 'https://'), array('', ''), $from) . "' value='$val[access_count]' color='" . $this->chart_color($key). "' />";
$key++;
}
$from_xml .= '</graph>';
$this->assign('from_data', $from_xml);
$this->assign('area_data', $area_xml);
$this->display();
}
public function chart_color($n){
/* 随机显示颜色代码 */
$arr = array('33FF66', 'FF6600', '3399FF', '009966', 'CC3399', 'FFCC33', '6699CC', 'CC3366', '33FF66', 'FF6600', '3399FF');
if ($n > 8){
$n = $n % 8;
}
return $arr[$n];
}
HTML代码: <div class="call_top">地区分布</div>
<div class="data_city">
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="900" HEIGHT="300" id="General" ALIGN="middle">
<PARAM NAME="FlashVars" value="&dataXML={$area_data}">
<PARAM NAME=movie VALUE="__PUBLIC__/images/charts/pie3d.swf?chartWidth=900&chartHeight=300">
<PARAM NAME=quality VALUE=high>
<PARAM NAME=bgcolor VALUE=#FFFFFF>
<param NAME="wmode" VALUE="opaque" />
<EMBED src="__PUBLIC__/images/charts/pie3d.swf?chartWidth=900&chartHeight=300" FlashVars="&dataXML={$area_data}" quality=high bgcolor=#FFFFFF WIDTH="900" HEIGHT="300" NAME="General" ALIGN="middle" wmode="opaque" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT>
</div> 本文所用到的数据表及插件下载地址:http://www.jb100.net/html/content-28-373-1.html希望本文所述对大家有所帮助,也希望大家继续关注我!
