php数据分析统计图 php 统计( 三 )


}elseif($ydataNum) {
// 多个系列的数据时
foreach($val as $ckey = $cval) {
if($ckey == count($val) - ) break;
$lineX = $chartLeft + + $lineWidth*$ckey;
$lineY = $lineY-$barHeightMulti*($val[$ckey+])/$multi;
// 画折线
if($ckey == count($val) - ) {
imagefilledellipse($this-image,$lineX+$lineWidth,$lineY,,,$color[$key%count($this-color)]);
}
imageline($this-image,$lineX,$lineY-$barHeightMulti*$cval/$multi,$lineX+$lineWidth,$lineY,$color[$key%count($this-color)]);
imagefilledellipse($this-image,$lineX,$lineY-$barHeightMulti*$cval/$multi,,,$color[$key%count($this-color)]);
}
}
}
// 绘画条形图的x坐标的值
foreach($this-xdata as $key = $val) {
$lineX = $chartLeft + $lineWidth*$key + $lineWidth/ - ;
imagettftext($this-image,,-,$lineX,$lineY+,$fontColor,$fontPath,$this-xdata[$key]);
}
// 两个系列数据以上时绘制小矩形及之后文字说明
if($ydataNum) {
$x = $lineChartWidth + $space;
$y = ;
foreach($this-seriesName as $key = $val) {
imagefilledrectangle($this-image,$x,$y,$x+$recWidth,$y+$recHeight,$color[$key%count($this-color)]);
imagettftext($this-image,,,$x+$recWidth+,$y+$recHeight-,$fontColor,$fontPath,$this-seriesName[$key]);
$y += $recHeight + ;
}
}
// 绘画标题
$titleStart = ($this-width - .*strlen($this-title))/;
imagettftext($this-image,,,$titleStart,,$fontColor,$fontPath,$this-title);
// 输出图片
header("Content-Type:image/png");
imagepng ( $this-image );
}
/*
* 私有方法,当数组为二元数组时 , 统计数组的长度
* Array arr 要做统计的数组
*/
private function arrayNum($arr) {
$num = ;
if(is_array($arr)) {
$num++;
for($i = ; $icount($arr); $i++){
if(is_array($arr[$i])) {
$num = count($arr);
break;
}
}
}
return $num;
}
/*
* 私有方法 , 计算数组的深度
* Array arr 数组
*/
private function arrayDepth($arr) {
$num = ;
if(is_array($arr)) {
$num++;
for($i = ; $icount($arr); $i++){
if(is_array($arr[$i])) {
$num += $this-arrayDepth($arr[$i]);
break;
}
}
}
return $num;
}
/*
* 私有方法,找到一组中的最大值
* Array arr 数字数组
*/
private function arrayMax($arr) {
$depth = $this-arrayDepth($arr);
$max = ;
if($depth == ) {
rsort($arr);
$max = $arr[];
}elseif($depth) {
foreach($arr as $val) {
if(is_array($val)) {
if($this-arrayMax($val)$max) {
$max = $this-arrayMax($val);
}
}else{
if($val$max){
$max = $val;
}
}
}
}
return $max;
}
/*
* 私有方法,求数组的平均值
* Array arr 数字数组
*/
function arrayAver($arr) {
$aver = array();
foreach($arr as $val) {
if(is_array($val)) {
$aver = array_merge($aver,$val);
}else{
$aver[] = $val;
}
}
return array_sum($aver)/count($aver);
}
/*
* 私有方法,求数组中元素长度最大的值
* Array arr 字符串数组,必须是汉字
*/
private function arrayLengthMax($arr) {
$length = ;
foreach($arr as $val) {
$length = strlen($val)$length ? strlen($val) : $length;
}
return $length/;
}
// 析构函数
function __destruct(){
imagedestroy($this-image);
}
}
测试代码如下:
$xdata = https://www.04ip.com/post/array('测试一','测试二','测试三','测试四','测试五','测试六','测试七','测试八','测试九');
$ydata = https://www.04ip.com/post/array(array(,,,,,,,,),array(,,,,,,,,));

推荐阅读