您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php生成图形(Libchart)实例

2026/2/8 22:03:37发布10次查看
统计图形就我们会常到的数据图形了,如果三个数组以图形显示或楼盘以图形走向我们都会要用到图形,下面介绍一个php libchart图形生成类
统计图形就我们会常到的数据图形了,如果三个数组以图形显示或楼盘以图形走向我们都会要用到图形,,下面我来介绍一个php libchart图形生成类吧,很用的有需要的朋友可参考。
简单全数字或英文的就可以直接使用下面类了(libchart类大家可自行百度下载)
复制代码 代码如下:
/*
  update by leo
  it's draw the pic of sheet,and it will take all the num on the pic.
 */
 require ./libchart/classes/libchart.php;
 class drawpic{
  var $chart;
  var $style;
  function drawpic($style=1,$width=500,$height=250){
   $this->style=$style;
   if($style==1){
    //cylinder
    $this->chart = new verticalbarchart($width,$height);
   }else if($style==2){
    //line
    $this->chart = new linechart($width,$height);
   }else if($style==3){
    //lump
    $this->chart = new piechart($width,$height);
   }else{
    //cross
    $this->chart=new horizontalbarchart($width,$height);
   }
  }
function draw($obj){
if($this->style==1||$this->style==1){
    //cylinder
    $dataset = new xydataset() ;
    $this->chart->settitle($obj->title);//title
    $arr=array();
    $arr=$obj->dataarray;
    foreach($arr as $key => $val){
     $dataset->addpoint ( new point($key,$val)) ;
    }
    $this->chart->setdataset ( $dataset ) ;
    $this->chart->render();
   }else if($this->style==2||$this->style==2){
    //line
    $this->chart->settitle($obj->title);//title
    $arr=array();
    $arr=$obj->dataarray;
    $i=0;
    $dataset = new xyseriesdataset();
    foreach($arr as $key => $val){
     $serie{$i}= new xydataset();
     foreach($val as $k => $v){
      $serie{$i}->addpoint(new point($k,$v));
     }
     $dataset->addserie($key,$serie{$i});
     $i=$i+1;
    }
    $this->chart->setdataset($dataset);
    $this->chart->render();
   }else if($style==3){
    //lump
    $dataset = new xydataset() ;
    $this->chart->settitle($obj->title);//title
    $arr=array();
    $arr=$obj->dataarray;
    foreach($arr as $key => $val){
     $dataset->addpoint ( new point($key.($val),$val)) ;
    }
    $this->chart->setdataset ( $dataset ) ;
    $this->chart->render();
   }else{
    //cross
    $dataset = new xydataset();
    $this->chart->settitle($obj->title);//title
    $arr=array();
    $arr=$obj->dataarray;
    foreach($arr as $key => $val){
     $dataset->addpoint ( new point($key,$val)) ;
    }
    $this->chart->setdataset($dataset);
    $this->chart->render();
   }
  }
}
 class kkk{};
 $n=new drawpic(4);//it will set 1 or 2 or 3 or 4
 $k=new kkk();
 $k->dataarray=array(2000=>30,2001=>40,2002=>50,2003=>60,2004=>70,2005=>80,20020=>90);//style==1 or style=2 or style=4
 //$k->dataarray=array(2000=>30,2001=>40,2002=>50,2003=>60,2004=>70,2005=>80,20020=>90);//style==3
 //$k->dataarray=array(yi=>array(2000=>30,2001=>40,2002=>50,2004=>60),er=>array(2003=>60,2004=>70,2005=>80,20020=>90),san=>array(33=>12,45=>56,89=>45,86=>49));//style==2 and the years will show first array to block.(it will be show 2000 2001 2002 2004)
 $k->title=the sheet title;
 $n->draw($k);
?>
红色字体为调用。方法1,2,4为相同的数组。3为线性图,有可能有两条线或者多条线的比较(也可以单线)。
如果要使用中文可能会发现libchart中文乱码 了,下面找了一个办法我们的应用主源代码如下:
复制代码 代码如下:
addpoint ( new point( jan 2005 , 273 )) ;
    $dataset -> addpoint ( new point( $str , 120 )) ;
    $dataset -> addpoint ( new point( march 2005 , 442 )) ;
    $dataset -> addpoint ( new point( april 2005 , 600 )) ;
     // 把这个数据集合传递给图形对象
    $chart -> setdataset ( $dataset ) ;
    // 设置图形的标题,并把它作为一个 png 文件渲染
    $chart -> settitle ( 统计图 ) ;
//$chart -> render ( demo/generated/demo1.png ) ;
    // 这里需要一个路径和文件名称
    //就这么简单一个像下图一样美丽的柱状图就出来了
    $chart -> render () ;
?>
标红字的地方是为了解决中文乱码的。
2、标题乱码:
默认显示中文是乱码,这是由于编码的原因,做如下修改:
首先,更改libchar/libchart/classes/view/chart/chart.php,找到如下内容:
复制代码 代码如下:
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product