Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5118952
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类:

2006-11-29 16:54:55

/****************************************************************************
|    @Author:    etng
|    @Email:        etng2004[at]gmail.com etng2004[at]hotmail.com
|    @QQ:        35605690
|    @WangWang:    etng
|    @Homepage:    [url][/url]
@FileName        :    draw.bar.php
@Description    :    生成统计图
@CreateTime        :    2004-12-10
@LastModify        :    2004-12-10
@Version        :    1.0beta
@Copyright        :    etng.net
|
|            做一个快乐的CODER!    PHP = Programme Help Perfect!
|
****************************************************************************/
header("Content-Type:text/html; charset=utf-8");
header("Content-Language:utf-8");
?>



$bar    =    new bar(200,15,5);
$pair    =    $arr=array(
                        
'1月'    =>    250,
                        
'2月'    =>    370,
                        
'3月'    =>    621,
                        
'4月'    =>    720,
                        
'5月'    =>    326,
                        
'6月'    =>    455,
                        
'7月'    =>    132,
                        
'8月'    =>    345,
                        
'9月'    =>    611,
                        
'10月'    =>    126,
                        
'11月'    =>    551,
                        
'12月'    =>    266
                        
);
$bar->setData($pair);
echo 
"

月平均销售额,单位:(万元)

"
;
$bar->draw();
echo 
"

月平均销售额,单位:(万元)

"
;
$bar->draw(false);
echo 
"调试数据如下:";
echo 
"";
var_dump($bar);
echo 
"";
?>

/*
@柱状统计图
*/
class bar
{
    
//颜色, 默认为20种, 如果客户数据超过20种, 则回到第一种, 如此循环.
    
var $color    =    array(
                        
'#97bd00','#009900','#cc3300',
                        
'#ffcc00','#3366cc','#33cc33',
                        
'#ff9933','#cccc99','#99cc66',
                        
'#66ff99','#4f6600','#003300',
                        
'#481000','#7d6400','#173064',
                        
'#1a6a1a','#974b00','#78793c',
                        
'#557e27','#009337'
                        
); 
    var 
$total    =    399;
    var 
$per    =    25;
    
//柱与柱之间的间隔
    
var $space    =    5;
    var 
$max    =    0;
    
/*
    构造函数
    */
    
function bar($T=399 ,$P=25 ,$S=5)
    {
            
$this->total        $T;//总高度或者宽度
            
$this->per            $P;//单元高度或者宽度
            
$this->space        $S;//各柱间隔
    
}
    
/*
    给出具体数据
    */
    
function setData($pair)
    {
        
$this->DATA        =    $pair;
        
$values            =    array_values($pair);
                            
asort($values);
        
$this->max        =    array_pop($values);
    }
    function 
draw($H=true)
    {
        
$H?$this->drawH():$this->drawV();
    }
    function 
drawH(){
        
$cntColor=count($this->color);
        
$i=0;
?>
  echo $this->space?>">
            foreach($this->DATA as $k=>$v){
            
$curColor $this->color[($i++)%$cntColor];
    
?>

  
    echo  /*打印左边标签*/ $k?>
    
   echo $this->per?>">
     
       echo floor(($this->total/$this->max)*$v);?>" bgstyle="color: /*柱状颜色*/ echo $curColor?>"> 
        /*在柱状图的顶端输出数值*/ echo $v?>
     
   
   
  
      }
?>

      }//end function 

    
function drawV(){
        
$cntColor=count($this->color);
        
$i=0;
?>
    
    /*一定要设置为低部对齐*/ ?>
        
foreach($this->DATA as $k=>$v){
            
$curColor $this->color[($i++)%$cntColor];
?>
    
      /*在柱状图的顶端输出数值*/
            
echo $v
?>
        echo floor(($this->total/$this->max)*$v);?>" border=0>
        
        /*柱状颜色*/ echo $curColor?>" width="/*第条柱的宽度*/ echo $this->per?>">
          
      /*打印低部对应标签*/ echo $k;?>
      
        }//end for
?>
    
  
      }//end function 
}//end class
?>
;
阅读(2160) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~