喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

$5.95 Web Hosting     

上一主题 下一主题
     
标题: 恭喜村子重新开张,共享一个改造的bar图形代码  
 
etng
注册会员
Rank: 2
一般会员


UID 12921
精华 0
积分 189
帖子 237
金钱 189 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2002-2-24
状态 离线
[广告]: 代充Paypal帐号美元
恭喜村子重新开张,共享一个改造的bar图形代码

先说一下,原形是昨天我在某博克上看见的,想法不错,就整理了下,希望对大家有用。

<?php
/****************************************************************************
|    @Author:    etng
|    @Email:        etng2004[at]gmail.com etng2004[at]hotmail.com
|    @QQ:        35605690
|    @WangWang:    etng
|    @Homepage:    [url]http://www.etng.net/[/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");
?>
<script language="JavaScript">
<!--
function toggleNext(o){
        var obj=o.nextSibling;
        if(obj.style.display=="none"){
            obj.style.display="block";
        }else{
            obj.style.display="none";
        }
}
//-->
</script>
<?php
$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 
"<h3>月平均销售额,单位:(万元)</h3>";
$bar->draw();
echo 
"<h3>月平均销售额,单位:(万元)</h3>";
$bar->draw(false);
echo 
"<h3 onclick=\"toggleNext(this);\">调试数据如下:</h3>";
echo 
"<pre style='display:none;'>";
var_dump($bar);
echo 
"</pre>";
?>

<?php
/*
@柱状统计图
*/
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;
?>
  <table border="0" cellpadding="0" cellspacing="<?php echo $this->space?>">
    <?php
        
foreach($this->DATA as $k=>$v){
            
$curColor $this->color[($i++)%$cntColor];
    
?>

  <tr>
    <td><p align="right"><?php echo  /*打印左边标签*/ $k?></td>
    <td>
   <table border="0" cellpadding="0" cellspacing="0" height="<?php echo $this->per?>">
     <tr>
       <td width="<?echo floor(($this->total/$this->max)*$v);?>" bgcolor="<?php /*柱状颜色*/ echo $curColor?>">&nbsp;</td>
       <td>&nbsp;<?php /*在柱状图的顶端输出数值*/ echo $v?></td>
     </tr>
   </table>
   </td>
  </tr>
<?php
      
}
?>
</table>
  <?php
    
}//end function 

    
function drawV(){
        
$cntColor=count($this->color);
        
$i=0;
?>
    <table border=0>
    <tr valign="bottom"><?php /*一定要设置为低部对齐*/ ?>
<?php
        
foreach($this->DATA as $k=>$v){
            
$curColor $this->color[($i++)%$cntColor];
?>
    <td align="center">
<?php
      
/*在柱状图的顶端输出数值*/
            
echo $v
?>
        <table height="<?echo floor(($this->total/$this->max)*$v);?>" border=0>
        <tr>
        <td bgcolor="<?php /*柱状颜色*/ echo $curColor?>" width="<?php /*第条柱的宽度*/ echo $this->per?>"></td>
          </tr>
      </table><font color="#3F7F9F"><?php /*打印低部对应标签*/ echo $k;?></font>
      </td>
<?php 
        
}//end for
?>
    </tr>
  </table>
  <?php
    
}//end function 
}//end class
?>
2005-12-21 11:20 AM#1
查看资料  访问主页  发短消息  QQ  顶部
 
meteor_shower
高级会员
Rank: 4
揮刀戲江湖譜寫情緣傳奇


UID 66798
精华 2
积分 977
帖子 913
金钱 947 喜悦币
威望 30
人脉 0
阅读权限 50
注册 2005-9-21
来自 深圳
状态 离线
[广告]: 代充Paypal帐号美元
不錯
2005-12-21 12:04 PM#2
查看资料  Blog  发短消息  QQ  顶部
 
googniao
中级会员
Rank: 3Rank: 3
中级会员



UID 18385
精华 1
积分 371
帖子 344
金钱 361 喜悦币
威望 10
人脉 0
阅读权限 30
注册 2003-2-16
状态 离线
[推荐阅读] 严重有问题
,,

我在PHP下代码运行出错,就是HEADER那两行出错。
2005-12-21 12:14 PM#3
查看资料  访问主页  Blog  发短消息  顶部
 
lianhj (lianhj)
新手上路
Rank: 1
初级会员



UID 54448
精华 0
积分 19
帖子 21
金钱 19 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2004-11-25
状态 离线
[推荐阅读] -_-!一来就看到村长在灌水.
看看在HEADER前面有没有输出,或者在<?前面有没有输出
2005-12-21 12:26 PM#4
查看资料  发短消息  顶部
 
pppp (php编程)
高级会员
Rank: 4
老会员


UID 19770
精华 0
积分 552
帖子 566
金钱 552 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2003-4-21
状态 离线
[推荐阅读] 奢侈问题 高手请近
把它换成这个不就行了吗
<html>
<head>
<title>Edit Category</title>
<meta http-equiv="Content-Type" content="text/html; charset=bgcolor">
2005-12-21 12:46 PM#5
查看资料  发短消息  QQ  ICQ 状态  顶部
 
pppp (php编程)
高级会员
Rank: 4
老会员


UID 19770
精华 0
积分 552
帖子 566
金钱 552 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2003-4-21
状态 离线
[推荐阅读] 教您如何开发mvc结构的程序
gb2312
2005-12-21 12:47 PM#6
查看资料  发短消息  QQ  ICQ 状态  顶部
 
燕归楼
新手上路
Rank: 1



UID 71905
精华 0
积分 35
帖子 34
金钱 35 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-4-18
状态 离线
[推荐阅读] 问取得表记录总数的语句
谢谢 收藏了
2006-5-13 11:27 AM#7
查看资料  发短消息  顶部
 
气球
新手上路
Rank: 1


UID 72946
精华 0
积分 46
帖子 82
金钱 46 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-5-8
状态 离线
[推荐阅读] 图片验证码如何实现?
谢谢!
收藏
2006-7-12 11:14 AM#8
查看资料  发短消息  顶部
 
sunny_hu (sunny_hu)
新手上路
Rank: 1
初级会员



UID 68732
精华 0
积分 2
帖子 2
金钱 2 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-2-20
状态 离线
[推荐阅读] 时时记录总数好还是用时再统计好?
回复 #1 etng 的帖子

不错,不错,谢啦!
2007-10-30 09:08 AM#9
查看资料  发短消息  顶部
 
njuljf
新手上路
Rank: 1



UID 76631
精华 0
积分 5
帖子 5
金钱 5 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-18
状态 离线
[推荐阅读] 老大啊,咱们村子真的备案了么?
很漂亮。
也很有用
2007-11-6 02:20 PM#10
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.037165 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP