PHP轻量级图表类PHP Light Chart:PLChart

该类可以生成饼状图(2D/3D),柱状图(2D/3D),以及折线图,可控制输出至浏览器或文件,控制输出的jpeg图像的质量。
所有的设置工作只有5个函数:
1。图表背景色设置setbgcolor()
2。图表参数设置setchartdata()
2。图表标题设置settitle()
3。图表注释设置setdesc()
4。图表图形设置setgraphics()

详细的设置参数请参考文档注释或是后面的测试页面demo.php

<? php 
/*
  * PLChart - PHP图表生成工具 - Create charts in PHP 
  * 
  * ====================================================================   
  *    Filename :    plchart.php   
  *    Summary:      PLChart图表类文件 - PLChart class file 
  *    Author:       zeroleonhart ( msn:zeroleonhart@hotmail.com ) 
  *    Version:      0.060811 
  *    Copyright (c)2006 zeroleonhart@hotmail.com 
  * ==================================================================== 
  * 
  * 
  
*/  
   
class  plchart 

    
//  ============================ 参数定义 - define references ============================ 

// 图表变量 - chart variable 

var   $chart

//  图表类型 - chart type 
var   $type

//  3D效果 - 3D effect 
var   $d3d

//  图表宽度 - chart width 
var   $width

//  图表高度 - chart height 
var   $height

//  图表质量 - chart quality 
var   $quality
     
    
//  图表背景色 - image backgroundcolor 
var   $bgcolor   =   array (); 
       
    
//  图表参数 - chart parameter 
var   $param   =   array (); 

//  保存为文件的路径 - saving file directory 
var   $savefile

//  图形参数 - graphics references 
var   $graphics   =   array (); 

//  标题参数 - title references 
var   $title   =   array (); 

//  注释参数 - description references 
var   $desc   =   array (); 

//  图表颜色数组 - colors array in chart 
var   $colors   =   array (); 

//  颜色定义 - define color 
var   $colordefine   =   array
                             
" lightgray "   =>   array ( 192 ,   192 ,   192 ) ,  
                 
" darkgray "   =>   array ( 144 ,   144 ,   144 ) ,  
     
                 
" lightred "   =>   array ( 255 ,   0 ,   0 ) ,  
                 
" darkred "   =>   array ( 128 ,   0 ,   0 ) ,  
     
                 
" lightgreen "   =>   array ( 0 ,   255 ,   0 ) ,  
                 
" darkgreen "   =>   array ( 0 ,   80 ,   0 ) ,  
     
                 
" lightblue "   =>   array ( 0 ,   0 ,   255 ) ,  
                 
" darkblue "   =>   array ( 0 ,   0 ,   80 ) ,  
     
                 
" lightyellow "   =>   array ( 255 ,   255 ,   0 ) ,  
                 
" darkyellow "   =>   array ( 200 ,   200 ,   50 ) ,  
     
                 
" lightcyan "   =>   array ( 0 ,   255 ,   255 ) ,  
                 
" darkcyan "   =>   array ( 0 ,   90 ,   90 ) ,  
                ); 
     
   
//  ============================ 设置函数 - setting functions ============================ 
                 
/*  
  * @todo  设置图像背景色 - set the backgroundcolor of the chart image 
  * 
  * @param  int $red       
  * @param  int $green     
  * @param  int $blue     
  * 
  
*/  
function  setbgcolor( $red   =   0 ,   $green   =   0 ,   $blue   =   0

       
     
$this -> bgcolor[ 0 =   $red
  
$this -> bgcolor[ 1 =   $green
  
$this -> bgcolor[ 2 =   $blue



/*  
  * @todo  设置图像参数 - set the parameters of the chart image 
  * 
  * @param  string $type 
  * @param  int $d3d 
  * @param  int $width 
  * @param  int $height 
  * @param  int $quality 
  * @param  array $data 
  * @param  string $savefile 
  * 
  
*/  
function  setchartdata( $type   =   " pie " ,   $d3d   =   1 ,   $width   =   400 ,   $height   =   400 ,   $quality   =   70 ,   $data   =   array () ,   $savefile   =   ''

       
     
$this -> type  =   $type ;      //  图表类型 - type of the chart : pie, column, line 
   $this -> d3d  =   $d3d ;      //  3D效果 - 
   $this -> width  =   $width ;      //  图表宽度 
   $this -> height  =   $height ;      //  图表高度 
   $this -> quality  =   $quality ;      //  图表显示质量 
   $this -> param  =   $data ;      //  源数据数组 
   $this -> savefile  =   $savefile ;      //  保存文件路径 
   




/*  
  * @todo  设置图像标题 - set the title of the chart 
  * 
  * @param  string $tstring 
  * @param  float $tfontsize 
  * @param  float $tangle 
  * @param  int $tposx 
  * @param  int $tposy 
  * @param  string $tfontfile 
  * @param  int $tfred       
  * @param  int $tfgreen     
  * @param  int $tfblue     
  * 
  
*/  
function  settitle( $tstring   =   '' ,   $tfontsize   =   20 ,   $tangle   =   0 ,   $tposx   =   10 ,   $tposy   =   20 ,   $tfontfile   =   ' c:/windows/fonts/simhei.ttf ' ,   $tfred   =   0 ,   $tfgreen   =   0 ,   $tfblue   =   0

     
$this -> title  =   array ( $tfontsize ,   $tangle ,   $tposx ,   $tposy ,   $tfontfile ,   $tstring ,   $tfred ,   $tfgreen ,   $tfblue ); 





/*  
  * @todo  设置图像注释 - set the decsription of the chart 
  * 
  * @param  int $dposx 
  * @param  int $dposy 
  * @param  int $dwidth 
  * @param  int $dheight 
  * @param  int $dmargin 
  * @param  int $dsize 
  * @param  int $dangle 
  * @param  string $dfontfile 
  * @param  int $dfred   
  * @param  int $dfgreen     
  * @param  int $dfblue     
  * 
  
*/  
function  setdesc( $dposx   =   0 ,   $dposy   =   0 ,   $dwidth   =   100 ,   $dheight   =   300 ,   $dmargin   =   10 ,   $dsize   =   10 ,   $dangle   =   0 ,   $dfontfile   =   ' c:/windows/fonts/simhei.ttf ' ,   $dfred   =   0 ,   $dfgreen   =   0 ,   $dfblue   =   0

     
$this -> desc  =   array ( $dposx ,   $dposy ,   $dwidth ,   $dheight ,   $dmargin ,   $dsize ,   $dangle ,   $dfontfile ,   $dfred ,   $dfgreen ,   $dfblue ); 





/*  
  * @todo  设置图形 - set the graphics of the chart 
  * 
  * @param  int $gstartx 
  * @param  int $gstarty 
  * @param  int $gwidth 
  * @param  int $gheight 
  * @param  int $gmargin       
  * @param  float $shadow     
  * 
  
*/  
function  setgraphics( $gstartx   =   0 ,   $gstarty   =   0 ,   $gwidth   =   100 ,   $gheight   =   100 ,   $gmargin   =   10 ,   $shadow   =   0.1

     
$this -> graphics  =   array ( $gstartx ,   $gstarty ,   $gwidth ,   $gheight ,   $gmargin ,   $shadow ); 





//  ============================ 生成函数 - build functions ============================ 

/*  
     * @todo  生成图表实例 - build chart object 
     * 
     
*/  
    
function  buildchart() 
    { 
     
//  图像头信息 - header of the image file 
         header ( " Content-type: image/jpeg " ); 

  
//  建立图像 - create image 
         $this -> chart  =  imagecreatetruecolor( $this -> width ,   $this -> height); 
   
  
//  填充背景色 - set backgroundcolor 
   $bgc   =  imagecolorallocate( $this -> chart ,   $this -> bgcolor[ 0 ] ,   $this -> bgcolor[ 1 ] ,   $this -> bgcolor[ 2 ]); 
        imagefill(
$this -> chart ,   0 ,   0 ,   $bgc ); 
   
  
//  定义颜色 - allocate colors in the graphics                     
      foreach ( $this -> colordefine  as   $key   =>   $value
     { 
           $
$key   =  imagecolorallocate( $this -> chart ,   $value [ 0 ] ,   $value [ 1 ] ,   $value [ 2 ]); 
     
array_push ( $this -> colors ,  $ $key );     //  颜色变量入栈 - add color variables into array 
   
     } 





/*  
     * @todo  生成图表标题 - build title of the chart 
     * 
     
*/  
    
function  buildtitle() 
    { 
      
//  设置标题颜色 - set title color 
       $titlecolor   =  imagecolorallocate( $this -> chart ,   $this -> title[ 6 ] ,   $this -> title[ 7 ] ,   $this -> title[ 8 ]); 
   
//  写标题 - write title 
   imagettftext( $this -> chart ,   $this -> title[ 0 ] ,   $this -> title[ 1 ] ,   $this -> title[ 2 ] ,   $this -> title[ 3 ] ,   $titlecolor ,   $this -> title[ 4 ] ,   $this -> title[ 5 ]); 
   




/*  
     * @todo  生成图表说明 - build description of the chart 
     * 
     
*/  
    
function  builddesc() 
    { 
      
//  注释位置变量 - image position variables 
       $dposx   =   $this -> desc[ 0 ]; 
   
$dposy   =   $this -> desc[ 1 ];      //  注释起始坐标 - the start position of the description 
       $w   =   $this -> desc[ 2 ];      //  注释部分宽度 - width of all description 
       $h   =   $this -> desc[ 3 ];      //  注释部分高度 - height of all description 
       $num   =   count ( $this -> param);      //  注释数量 - number of description lines 
       $perh   =   round ( $h   /   $num );       //  每行注释的平均高度 - height of each description line 
       $margin   =   $this -> desc[ 4 ];      //  注释的间距 - margin between square and font 
       $dsize   =   $this -> desc[ 5 ];      //  注释的字体大小 - font size of description 
    $dangle   =   $this -> desc[ 6 ];      //  注释的字体角度 - font display angle of description 
    $dfontfile   =   $this -> desc[ 7 ];      //  注释的字体文件 - font file of description 
    $dfcolor   =  imagecolorallocate( $this -> chart ,   $this -> desc[ 8 ] ,   $this -> desc[ 9 ] ,   $this -> desc[ 10 ]);      //  注释的字体颜色 - font color of description 
   
   // 写注释 - write description 

    $dstring   =   array_keys ( $this -> param); 
   
for ( $i   =   0 $i   <   $num $i ++
   { 
        
//  矩形色块 - colorful square 
        imagefilledrectangle( $this -> chart ,   $dposx ,   $dposy ,   $dposx   +   $dsize ,   $dposy   +   $dsize ,   $this -> colors[ $i   *   2 ]); 
     
     
//  写文字 - write string 
     imagettftext( $this -> chart ,   $dsize ,   $dangle ,   $dposx   +   $dsize   +   $margin ,   $dposy   +   $dsize ,   $dfcolor ,   $dfontfile ,   $dstring [ $i .   "  -  "   .   $this -> param[ $dstring [ $i ]]); 
     
     
//  下移 - move down to write next description 
      $dposy   +=   $perh
   
   } 
    } 

     
/*  
     * @todo  生成图形 - build graphics of the chart 
     * 
     * @param  source $chart 
     * @param  int $d3d 
     * @param  array $param 
  * @param  array $colordefine 
     * 
     
*/    
    
function  buildgraphics() 
    { 
        
//  定义生成图形函数 - define make graphics function 
  // ====================   饼状图 - pie   ==================== 

   if ( $this -> type  ==   " pie "
  {   
             
//  取得图形位置 - get the positoin of the graphics 
           $posx   =   $this -> graphics[ 0 ]; 
    
$posy   =   $this -> graphics[ 1 ]; 
     
    
//  取得图形宽度和高度 - get width and height of the graphics 
              $w   =   $this -> graphics[ 2 ]; 
          
$h   =   $this -> graphics[ 3 ]; 
   
          
//  图形边距 - graphics margin 
           $margin   =   $this -> graphics[ 4 ]; 
   
          
//  3D阴影高度对于椭圆高度的比例 - percent of 3D effect shadow height as the height of the ellipse 
           $shadow   =   $this -> graphics[ 5 ]; 
   
          
//  图形位置变量 - image position variables 
           $centerx   =   round ( $posx   +   $w   /   2   +   $margin ); 
    
$centery   =   round ( $posy   +   $h   /   2   +   $margin );      //  椭圆中心坐标 - the center of the ellipse         

          // 数据处理 - data process 

           $total   =   array_sum ( $this -> param);      //  取得总数 - get total 
           $percent   =   array ( 0 );      //  保存比例 - save each percent 
     $temp   =   0
          
foreach ( $this -> param  as   $v
          { 
         
              
$temp   +=   360   *  ( $v   /   $total ); 
              
array_push ( $percent ,   $temp );      //  保存角度 - save angle 
   
          } 
               
          
//  生成饼状图 - make pie chart   
    // 生成3D饼状图 - make 3D pie chart 

     if ( $this -> d3d  ==   1 )     
          { 
                 
//  3D阴影 - make 3D shadow 
                     for  ( $j   =  ( $centery   *  ( 1   +   $shadow ));  $j   >   $centery $j -- )   
                 { 
                           
for  ( $k   =   0 $k   <   count ( $percent ) - 1 $k ++
                     { 
       
                       imagefilledarc(
$this -> chart ,   $centerx ,   $j ,   $w ,   $h ,   $percent [ $k ] ,   $percent [ $k   +   1 ] ,   $this -> colors[ $k   *   2   +   1 ] ,  IMG_ARC_NOFILL); 
     
               } 
                    } 
     
             } 
    
//  生成平面饼状图 - make 2D pie chart     
        for  ( $i   =   0 $i   <   count ( $percent ) - 1 $i ++
       { 
       
     imagefilledarc(
$this -> chart ,   $centerx ,   $centery ,   $w ,   $h ,   $percent [ $i ] ,   $percent [ $i   +   1 ] ,   $this -> colors[ $i   *   2 ] ,  IMG_ARC_PIE); 
     
       } 
               
  } 
   
  
//  ====================   柱状图 - column   ====================     
   elseif ( $this -> type  ==   " column "
  { 
       
//  取得图形位置 - get the positoin of the graphics 
           $posx   =   $this -> graphics[ 0 ]; 
    
$posy   =   $this -> graphics[ 1 ]; 
     
    
//  取得图形宽度和高度 - get width and height of the graphics 
              $w   =   $this -> graphics[ 2 ]; 
          
$h   =   $this -> graphics[ 3 ]; 
   
          
//  图形边距 - graphics margin 
           $margin   =   $this -> graphics[ 4 ]; 
   
          
//  3D阴影高度对于柱体宽度的比例 - percent of 3D effect shadow height as the width of the column 
           $shadow   =   $this -> graphics[ 5 ]; 
   
          
//  图形位置变量 - image position variables 
           $startx   =   round ( $posx   +   $margin ); 
    
$starty   =   round ( $posy   +   $h   -   $margin );      //  图形左下角坐标 - the left-bottom position of the graphics         

          // 数据处理 - data process 

           $maxvalue   =   max ( $this -> param);     //  取得最大值 - get max value 
     $num   =   count ( $this -> param);      //  取得条柱个数 - get number of columns 
     $multiple   =   floor ( log10 ( $maxvalue ));      //  取得数值区间 - get data field 
     $field   =   floor ( $maxvalue   /   pow ( 10 ,   $multiple ))  +   1 ;      //  区间数 - number of unit fields 
           $fieldnumber   =   $field   >   5   ?   $field   :   5 ;      //  数据区域数量 - number of data fields 
           $topvalue   =   $field   *   pow ( 10 ,   $multiple );      //  图表最高点数值 - value of the top 
     $unitx   =  ( $w   -   $margin   *   2 /   $num ;      //  取得x单位长度 - get x unit length 
     $unity   =  ( $h   -   $margin   *   2 /   $fieldnumber ;      //  取得y单位长度 - get y unit length 
     $shadowheight   =   $unitx   /   2   *   $shadow ;      //  阴影宽度 - shadow height 
     
    // 初始化坐标系 - initialize reference frame 

     if ( $this -> d3d  ==   1 )      //  3D效果 - 3D effect 
    { 
           imagefilledpolygon(
$this -> chart ,   array ( $startx ,   $starty ,   $startx   +   $shadowheight ,   $starty   -   $shadowheight ,   $startx   +   $shadowheight ,   $posy   -   $shadowheight ,   $startx ,   $posy ) ,   4 ,   $this -> colors[ 0 ]); 
           imageline(
$this -> chart ,   $startx   +   $shadowheight ,   $starty   -   $shadowheight ,   $startx   +   $shadowheight ,   $posy   -   $shadowheight ,   $this -> colors[ 1 ]);       
    } 
    imageline(
$this -> chart ,   $startx ,   $starty ,   $posx   +   $w ,   $starty ,   $this -> colors[ 1 ]);      //  x 
    imageline( $this -> chart ,   $startx ,   $starty ,   $startx ,   $posy ,   $this -> colors[ 1 ]);      //  y 
     
    // 区间标识 - declare fields 

     for ( $i   =   0 $i   <=   $fieldnumber $i ++ )     
    { 
         
//  区间标识线 - lines declaring fields 
      // 3D效果 - 3D effect 

             if ( $this -> d3d  ==   1
            { 
             imageline(
$this -> chart ,   $startx ,   $starty   -   $unity   *   $i ,   $startx   +   $shadowheight ,   $starty   -   $unity   *   $i   -   $shadowheight ,   $this -> colors[ 1 ]); 
       imageline(
$this -> chart ,   $startx   +   $shadowheight ,   $starty   -   $unity   *   $i   -   $shadowheight ,   $posx   +   $w   +   $shadowheight ,   $starty   -   $unity   *   $i   -   $shadowheight ,   $this -> colors[ 1 ]); 
      } 
      
//  2D - 2D 
       else  
      { 
                   imageline(
$this -> chart ,   $startx ,   $starty   -   $unity   *   $i ,   $posx   +   $w ,   $starty   -   $unity   *   $i ,   $this -> colors[ 0 ]);       
      } 
     
//  区间说明 - field description 
            imagettftext( $this -> chart ,   $this -> desc[ 5 ] ,   $this -> desc[ 6 ] ,   $posx ,   $starty   -   $unity   *   $i ,   $this -> colors[ 0 ] ,   $this -> desc[ 7 ] ,   $topvalue   /   $fieldnumber   *   $i );     
    } 
       
    
//  生成条柱 - make columns 
     $paramkeys   =   array_keys ( $this -> param); 
          
for ( $j   =   0 $j   <   $num $j ++
          { 
         
              
$columnheight   =  ( $h   -   $margin   *   2 *  ( $this -> param[ $paramkeys [ $j ]]  /   $topvalue );      //  条柱高度 - column height 
      $columnx   =   $startx   +   $unitx   /   4   +   $unitx   *   $j ;      //  条柱起点x坐标 - x coordinate of column 
              imagefilledrectangle( $this -> chart ,   $columnx ,   $starty   -   $columnheight ,   $columnx   +   $unitx   /   2 ,   $starty   -   1 ,   $this -> colors[ $j   *   2 ]);      //  画条柱 - draw columns   
                 
     // 3D效果 - 3D effect 

            if ( $this -> d3d  ==   1
           { 
         
//  轮廓线 - contour line 
                  imagerectangle( $this -> chart ,   $columnx ,   $starty   -   $columnheight ,   $columnx   +   $unitx   /   2 ,   $starty   -   1 ,   $this -> colors[ $j   *   2   +   1 ]); 
                  
//  3D表面 - 3D top 
         imagefilledpolygon( $this -> chart ,   array ( $columnx ,   $starty   -   $columnheight ,   $columnx   +   $unitx   /   2 ,   $starty   -   $columnheight ,   $columnx   +   $unitx   /   2   +   $shadowheight ,   $starty   -   $columnheight   -   $shadowheight ,   $columnx   +   $shadowheight ,   $starty   -   $columnheight   -   $shadowheight ) ,   4 ,   $this -> colors[ $j   *   2 ]); 
         imagepolygon(
$this -> chart ,   array ( $columnx ,   $starty   -   $columnheight ,   $columnx   +   $unitx   /   2 ,   $starty   -   $columnheight ,   $columnx   +   $unitx   /   2   +   $shadowheight ,   $starty   -   $columnheight   -   $shadowheight ,   $columnx   +   $shadowheight ,   $starty   -   $columnheight   -   $shadowheight ) ,   4 ,   $this -> colors[ $j   *   2   +   1 ]); 
         
//  3D阴影 - 3D shadow 
         imagefilledpolygon( $this -> chart ,   array ( $columnx   +   $unitx   /   2 ,   $starty ,   $columnx   +   $unitx   /   2   +   $shadowheight ,   $starty   -   $shadowheight ,   $columnx   +   $unitx   /   2   +   $shadowheight ,   $starty   -   $columnheight   -   $shadowheight ,   $columnx   +   $unitx   /   2 ,   $starty   -   $columnheight ) ,   4 ,   $this -> colors[ $j   *   2   +   1 ]); 
         imagepolygon(
$this -> chart ,   array ( $columnx   +   $unitx   /   2 ,   $starty ,   $columnx   +   $unitx   /   2   +   $shadowheight ,   $starty   -   $shadowheight ,   $columnx   +   $unitx   /   2   +   $shadowheight ,   $starty   -   $columnheight   -   $shadowheight ,   $columnx   +   $unitx   /   2 ,   $starty   -   $columnheight ) ,   4 ,   $this -> colors[ $j   *   2   +   1 ]); 
           } 
          } 
       
  } 
   
  
//  ====================   曲线图 - line   ==================== 
   else  
  { 
   
       
//  取得图形位置 - get the positoin of the graphics 
           $posx   =   $this -> graphics[ 0 ]; 
    
$posy   =   $this -> graphics[ 1 ]; 
     
    
//  取得图形宽度和高度 - get width and height of the graphics 
              $w   =   $this -> graphics[ 2 ]; 
          
$h   =   $this -> graphics[ 3 ]; 
   
          
//  图形边距 - graphics margin 
           $margin   =   $this -> graphics[ 4 ]; 
     
    
//  每个点的直径 - diameter of each point 
           $pointsize   =   $this -> graphics[ 5 *   20
   
          
//  图形位置变量 - image position variables 
           $startx   =   round ( $posx   +   $margin ); 
    
$starty   =   round ( $posy   +   $h   -   $margin );      //  图形左下角坐标 - the left-bottom position of the graphics         

          // 数据处理 - data process 

           $maxvalue   =   max ( $this -> param);     //  取得最大值 - get max value 
     $minvalue   =   min ( $this -> param);     //  取得最小值 - get min value 
     $num   =   count ( $this -> param);      //  取得点个数 - get number of points 
     $fieldnumber   =   $num ;      //  数据区域数量 - number of data fields 
     $fielddata   =   $maxvalue   -   $minvalue ;      //  取得数据区间 - get data field 
     $unitdata   =   $fielddata   /   $fieldnumber ;      //  取得单位区间数值 - get unit field data value 
     $unitx   =  ( $w   -   $margin   *   2 /   $num ;      //  取得x单位长度 - get x unit length 
     $unity   =  ( $h   -   $margin   *   2 /   $fieldnumber ;      //  取得y单位长度 - get y unit length 
     
    // 初始化坐标系 - initialize reference frame 

    imageline( $this -> chart ,   $startx ,   $starty ,   $posx   +   $w ,   $starty ,   $this -> colors[ 1 ]);      //  x 
    imageline( $this -> chart ,   $startx ,   $starty ,   $startx ,   $posy ,   $this -> colors[ 1 ]);      //  y 
     
    // 区间标识 - declare fields 

     for ( $i   =   0 $i   <=   $fieldnumber $i ++ )     
    { 
            
//  标识线 - declaring fields line 
      imageline( $this -> chart ,   $startx ,   $starty   -   $unity   *   $i ,   $posx   +   $w ,   $starty   -   $unity   *   $i ,   $this -> colors[ 0 ]);       
      
//  区间说明 - field description 
            imagettftext( $this -> chart ,   $this -> desc[ 5 ] ,   $this -> desc[ 6 ] ,   $posx ,   $starty   -   $unity   *   $i ,   $this -> colors[ 0 ] ,   $this -> desc[ 7 ] ,   $minvalue   +   $unitdata   *   $i );     
    } 
       
    
//  生成线条 - make line 
     $paramkeys   =   array_keys ( $this -> param); 
    
$loca   =   array ();      //  保存轨迹的数组 - array to save locas 
           for ( $i   =   0 $i   <   $num $i ++ )      //  得到轨迹数组 - get loca array 
          { 
           
//  点x坐标 - x coordinate of the point 
                  $pointx   =   $startx   +   $unitx   *   $i
     
//  点y坐标 - y coordinate of the point     
               $pointy   =   $starty   -   $unity   *   $fieldnumber   *  (( $this -> param[ $paramkeys [ $i ]]  -   $minvalue /   $fielddata ); 
     
//  坐标数据入栈 - push coordinates into array     
                     $loca [ $i   *   2 =   $pointx
     
$loca [ $i   *   2   +   1 =   $pointy
     
//  画点 - draw point 
     imagefilledellipse( $this -> chart ,   $pointx ,   $pointy ,   $pointsize ,   $pointsize ,   $this -> colors[ $i   *   2 ]); 
          } 
    
$linecolor   =  imagecolorallocate( $this -> chart ,   $this -> title[ 6 ] ,   $this -> title[ 7 ] ,   $this -> title[ 8 ]);      //  定义线条颜色 - define line color 
     for ( $i   =   0 $i   <   $num   +   3 ; ) 
    { 
           
//  画线条 - draw line 
     imageline( $this -> chart ,   $loca [ $i ] ,   $loca [ $i   +   1 ] ,   $loca [ $i   +   2 ] ,   $loca [ $i   +   3 ] ,   $linecolor ); 
     
$i   +=   2
    } 
     
  } 
    } 



/*  
  * @todo  输出图像至浏览器或文件 - output the chart image to browser or file 
  
*/  
    
function  outputchart() 

     
  
//  建立图标 - build chart 
   $this -> buildchart(); 
  
//  写入图形 - build graphics 
         $this -> buildgraphics(); 
   
  
//  写入注释 - build description 
         $this -> builddesc(); 
         
  
//  写入标题 - build title 
   $this -> buildtitle(); 
   
  
//  输出图像 - flush image 
        imagejpeg( $this -> chart ,   $this -> savefile ,   $this -> quality); 
        imagedestroy(
$this -> chart); 
   
    } 



?>  


*********************************************************************************  

演示文件demo
. php :  
**********************************************************************************  
<? php 
//  载入类文件 
include ( ' plchart.php ' ); 
   
// 设置数据数组 
$data   =   array ( " 1月份:11% "   =>   20 ,   " 2月份:16% "   =>   23 ,   " 3月份:19% "   =>   27 ,   " 4月份:13% "   =>   18 ,   " 5月份:18% "   =>   24 ,   " 6月份:12% "   =>   25 ); 
     
//  实例化 
$chart   =   new  plchart(); 
   
//  设置背景色 
// 三个参数为0-255 

$chart -> setbgcolor( 255 , 255 , 255 );     
//  设置标题文字 
$title   =   <<<   string  
图表测试 
TEST PIE CHART 
string
//  设置图表数据 
/*
 
* 第一个参数为图表类型,只能是三个值:pie, column, line 
* 第二个参数为是否启用3D显示,0代表不启用,1代表启动 
* 第三个参数为图表的宽度 
* 第四个参数为图表的高度 
* 第五个参数为图表的图片质量,0-100,100为最佳质量,但文件相对也最大 
* 第六个参数为原数据数组 
*/  
$chart -> setchartdata( " line " ,   0 ,   800 ,   600 ,   100 ,   $data ); 
     
//  设置标题 
/*
 
* 第一个参数为标题的字符串 
* 第二个参数为标题字体大小 
* 第三个参数为标题倾斜角度 
* 第四个参数为标题位于图表的起始横坐标 
* 第五个参数为标题文字的基准纵坐标 
* 第六个参数为标题字体文件 
* 最后三个参数为标题字体的RGB颜色 
*/  
$chart -> settitle( $title ,   20 ,   0 ,   10 ,   20 ,   ' c:/windows/fonts/simhei.ttf ' ,   0 ,   0 ,   0 ); 
//  设置注释 
/*
 
* 第一个参数为注释位于图表的起始横坐标 
* 第二个参数为注释位于图表的起始纵坐标 
* 第三个参数为注释部分的宽度 
* 第四个参数为注释部分的高度 
* 第五个参数为注释内容与注释部分边框的间距 
* 第六个参数为注释字体大小 
* 第七个参数为注释字体倾斜角度 
* 第六个参数为注释字体文件 
* 最后三个参数为注释字体的RGB颜色 
*/  
$chart -> setdesc( 500 ,   100 ,   200 ,   300 ,   10 ,   18 ,   0 ,   ' c:/windows/fonts/simhei.ttf ' ,   0 ,   0 ,   0 ); 
     
//  设置图形 
/*
 
* 第一个参数为图形部分位于整个图表的左上角横坐标 
* 第二个参数为图形部分位于整个图表的左上角纵坐标 
* 第三个参数为图形部分的宽度 
* 第四个参数为图形部分的高度 
* 第五个参数为图形与图形部分边框的间距(纵坐标标记的宽度) 
* 第六个参数为3D阴影的相对比例或是轨迹图中圆点的直径 
*/  
$chart -> setgraphics( 10 ,   100 ,   500 ,   500 ,   50 ,   0.3 ); 
     
//  输出图表 
$chart -> outputchart();     
//  销毁实例 
unset ( $chart ); 
?>  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值