站長資訊網
        最全最豐富的資訊網站

        學習PHP實現的曲線統計圖表示例

        學習PHP實現的曲線統計圖表示例

        本文實例講述了PHP實現的曲線統計圖表。分享給大家供大家參考,具體如下:

        <?php /****************************** *      折線圖生成函數 *      youd *      090207-01 ******************************/ function line_stats_pic($value_y,$width,$high,$strong=1,$fix=0){ //y值處理函數 function line_point_y($num,$width,$high,$max_num_add,$min_num_add,$y_pxdensity){   $return=$high-floor(($num-$min_num_add+$y_pxdensity)/(($max_num_add-$min_num_add)/$high));   return $return; } //參數處理 $allnum=sizeof($value_y); $max_num=max($value_y);              //最大值 $min_num=min($value_y);              //最小值 $limit_m=$max_num-$min_num;            //極差 $max_num_add=$max_num+$limit_m*0.1;        //軸最大值 $min_num_add=$min_num-$limit_m*0.1;        //軸最小值 $limit=$max_num_add-$min_num_add;         //極差-坐標軸y $y_pxdensity=($max_num_add-$min_num_add)/$high;  //y軸密度 $x_pxdensity=floor($width/$allnum);        //x軸密度 reset($value_y);                 //將數組指針歸零 $i=0; foreach($value_y as $val){   $point_y[$i]=line_point_y($val,$width,$high,$max_num_add,$min_num_add,$y_pxdensity);   $i++; } $zero_y=line_point_y(0,$width,$high,$max_num_add,$min_num_add,$y_pxdensity);  //零點的y值 $empty_size_x=(strlen($max_num) > strlen($min_num) ? strlen($max_num) : strlen($min_num))*5+3;          //左邊空白 //圖片流開始 header("Content-type:image/png"); $pic=imagecreate($width+$empty_size_x+10,$high+13); imagecolorallocate($pic,255,255,255);     //背景色 $color_1=imagecolorallocate($pic,30,144,255); //線條色 $color_2=imagecolorallocate($pic,0,0,0);   //黑色 $color_3=imagecolorallocate($pic,194,194,194);//灰色 //繪制網格 imagesetthickness($pic,1);          //網格線寬 $y_line_width=floor($width/100);       //縱網格線數目 $y_line_density=$y_line_width==0 ? 0 :floor($width/$y_line_width); //縱網格線密度 $point_zero_y=$zero_y > $high ? $high : $zero_y; imagestring($pic,1,$empty_size_x-1,$high+4,"0",$color_2); //零點數軸標記 for($i=1;$i <= $y_line_width;$i++){      //繪制縱網格線   imagesetthickness($pic,1);         //網格線寬   imageline($pic,$y_line_density*$i+$empty_size_x,0,$y_line_density*$i+$empty_size_x,$high,$color_3);   imagesetthickness($pic,2);         //軸點線寬   imageline($pic,$y_line_density*$i+$empty_size_x,$point_zero_y-4,$y_line_density*$i+$empty_size_x,$point_zero_y,$color_2);   imagestring($pic,1,100*$i+$empty_size_x-5,$high+4,$allnum/$y_line_width*$i,$color_2);  //數軸標記 } $x_line_width=floor($high/30);        //橫網格線數目 $x_line_density=$x_line_width==0 ? 0 :floor($high/$y_line_width);  //橫網格線密度 if($zero_y > $high){             //繪制橫網格線   imagestring($pic,1,0,$high-3,round($min_num_add,$fix),$color_2); //零點數軸標記   for($i=1;$i <= $x_line_width;$i++){    imagesetthickness($pic,1);        //網格線寬    imageline($pic,0+$empty_size_x,$high-$x_line_density*$i,$width+$empty_size_x,$high-$x_line_density*$i,$color_3);    imagesetthickness($pic,2);        //軸點線寬    imageline($pic,0+$empty_size_x,$high-$x_line_density*$i,3+$empty_size_x,$high-$x_line_density*$i,$color_2);    imagestring($pic,1,0,$high-$x_line_density*$i-3,round($limit/$x_line_width*$i+$min_num_add,$fix),$color_2);  //數軸標記   } }else{   imagestring($pic,1,$empty_size_x-8,$zero_y,"0",$color_2); //零點數軸標記   for($i=1;$i <= ceil($x_line_width/2);$i++){    imagesetthickness($pic,1);        //網格線寬    imageline($pic,0+$empty_size_x,$zero_y-$x_line_density*$i,$width+$empty_size_x,$zero_y-$x_line_density*$i,$color_3);    if($zero_y+$x_line_density*$i < $high){     imageline($pic,0+$empty_size_x,$zero_y+$x_line_density*$i,$width+$empty_size_x,$zero_y+$x_line_density*$i,$color_3);    }    imagesetthickness($pic,2);        //軸點線寬    imageline($pic,0+$empty_size_x,$zero_y-$x_line_density*$i,3+$empty_size_x,$zero_y-$x_line_density*$i,$color_2);    if($zero_y+$x_line_density*$i < $high){     imageline($pic,0+$empty_size_x,$zero_y+$x_line_density*$i,3+$empty_size_x,$zero_y+$x_line_density*$i,$color_2);    }    imagestring($pic,1,0,$zero_y-$x_line_density*$i-3,round($limit/$x_line_width*$i,$fix),$color_2);   //數軸標記    if($zero_y+$x_line_density*$i < $high){     imagestring($pic,1,0,$zero_y+$x_line_density*$i-3,round(-$limit/$x_line_width*$i,$fix),$color_2);  //數軸標記    }   } } //繪制軸線 imagesetthickness($pic,2);          //軸線寬 imageline($pic,1+$empty_size_x,0,1+$empty_size_x,$high,$color_2); if($zero_y > $high){             //x軸位置   imageline($pic,0+$empty_size_x,$high,$width+$empty_size_x,$high,$color_2); }else{   imageline($pic,0+$empty_size_x,$zero_y,$width+$empty_size_x,$zero_y,$color_2); } //產生折線 $point_x=0; $j=0; imagesetthickness($pic,$strong);       //線條粗細 while($j+1 < $allnum){   imageline($pic,$point_x+2+$empty_size_x,$point_y[$j],$point_x+$x_pxdensity+2+$empty_size_x,$point_y[$j+1],$color_1);   $point_x+=$x_pxdensity;   $j++; } imagepng($pic); imagedestroy($pic); } /* 函數描述及例子 參數說明: $value_y -------- 包含你想生成折線圖的數組,要求鍵值從0開始遞增。 $width--------生成的折線圖的網格寬度(不算白邊) $high--------高度 $strong-------線條粗細(默認為1) $fix-------數據保留的位數(默認為取整) */ for($i=0;$i<100;$i++){     $value = rand(1,200);     $value_y[]=$value; } line_stats_pic($value_y,500,100,1,1); ?>

        運行結果如下:

        學習PHP實現的曲線統計圖表示例

        相關學習推薦:PHP編程從入門到精通

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 十八18禁国产精品www| 高清在线国产午夜精品| 久久99精品国产99久久6男男| 国产精品丝袜一区二区三区 | 麻豆精品视频在线观看| 久久e热在这里只有国产中文精品99| 精品人妻少妇一区二区三区在线| 99re热视频这里只精品| 777被窝午夜精品影院| 精品久久久久久无码国产 | 久久亚洲精品无码AV红樱桃| 精品无码AV一区二区三区不卡 | 久草视频精品在线| 最新国产精品亚洲| 国产精品视频一区国模私拍| 国产精品无码国模私拍视频| 久久精品女人天堂AV麻| 亚洲无码精品浪潮| 亚洲国产另类久久久精品黑人 | 国产精品毛片无遮挡| 亚洲一级Av无码毛片久久精品| 精品久久久久久无码中文野结衣| 99久久国产综合精品成人影院 | 国产亚洲精品精华液| 久久精品国产精品亚洲精品| 国产午夜精品理论片免费观看| 国产精品国产三级国产| 一色屋精品视频在线观看| 国产精品露脸国语对白| 亚洲动漫精品无码av天堂| 亚洲精品乱码久久久久久蜜桃 | 爽爽精品dvd蜜桃成熟时电影院| 四虎成人精品在永久在线| 99热精品在线观看| 久久精品国产亚洲AV无码偷窥| 亚洲精品午夜无码专区| 亚洲精品亚洲人成人网| 欧产日产国产精品精品| 久久亚洲精品无码AV红樱桃| 精品久久久久久亚洲精品| 国产精品自在线拍国产|