统计图形就我们会常到的数据图形了,如果三个数组以图形显示或楼盘以图形走向我们都会要用到图形,下面我来介绍一个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中文乱码 了,下面找了一个办法
我们的应用主源代码如下:
复制代码 代码如下: