|
本帖最后由 yinzhili 于 2009-8-14 10:57 编辑
pChart是一个免费的PHP图表生成库,可以生成多种图表如饼图或者柱状图等等,需要GD库的支持。下面我来简单讲讲如何在CI中方便地使用它。
首先我们要下载pChart。访问http://pchart.sourceforge.net/download.php 就可以下载到最新版的pChart,目前最新的版本是1.27。解压下载到的文件,我们要用到的只是其中的pChart文件夹,里面有pChart.class、pCache.class和pData.class这三个文件。我们把pChart文件夹复制到 application/libraries/ 下面。
然后要准备字体,因为我们做报表很可能要输出中文,所以必须使用一种中文字体,至于选什么字体就看你的喜好了(如果是商业用途的话请注意字体的版权以免引起版权纠纷),把中文字体的ttf文件复制到 application/libraries/pChart 下面即可。
通过库的形式来使用pChart,因此在 application/libraries/ 下面创建一个文件,命名为 Chart.php,代码如下:
PHP复制代码 <?php
class Chart {
function Chart() {
include(APPPATH."libraries/pChart/pData.class");
include(APPPATH."libraries/pChart/pChart.class");
}
function draw_line_graph($params) {
$DataSet = new pData;
$DataSet->AddPoint($params['data'],"Serie1"); //需要显示的数据
$DataSet->AddPoint($params['date'],"Serie2"); //横坐标的数据
$DataSet->AddSerie("Serie1");
$DataSet->SetAbsciseLabelSerie("Serie2");
$DataSet->SetSerieName("订单总金额","Serie1");
$DataSet->SetYAxisName("RMB"); //纵坐标上显示的文字
$DataSet->SetXAxisName('横坐标:日期'); //横坐标上显示的文字
$DataSet->SetXAxisFormat("date"); //横坐标的数据类型
$Test = new pChart($params['height'],$params['width']); //图表文件的高度和宽度
$Test->setDateFormat($params['date_format']); //横坐标显示的日期格式
$Test->setColorPalette(0,255,0,0);
$Test->setFontProperties(APPPATH."libraries/pChart/FZLTXIHK.ttf",12); //设置使用的字体及字号
$Test->setGraphArea(60,60,$params['x_area'],$params['y_area']); //图形区域的高度和宽度
$Test->drawGraphArea(252,252,252); //线的颜色
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2);
$Test->drawGrid(4,TRUE,230,230,230,255);
$Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription());
$Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255);
$Test->setFontProperties(APPPATH."libraries/pChart/FZLTXIHK.ttf",8); //设置数据值所用字体及字号
$Test->writeValues($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie1"); //输出每个点的数据值
$Test->setFontProperties(APPPATH."libraries/pChart/FZLTXIHK.ttf",11); //设置使用的字体及字号
$Test->drawLegend(75,65,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties(APPPATH."libraries/pChart/FZLTXIHK.ttf",12); //设置使用的字体及字号
$Test->drawTitle(60,22,$params['title'],50,50,50,585);
$imagefile='public/temp/'.$params['filename'].'.png'; //设置生成文件的保存路径
$Test->Render($imagefile); //生成文件
return $imagefile; //返回文件名
}
} 复制代码
控制器:
PHP复制代码 function test (){
$this->load->library('chart'); //载入pChart库
$params['data']=array(100,200,150,600,230,150,510); //要显示的数据
for($i=0;$i<7;$i++){
$params['date'][$i]=1250217066+$i*86400; //要显示的日期,注意这里是Unix时间戳,pChart会自动传换成你要的格式
}
$params['title']='销售报表'; //图片标题
$params['date_format']='m月j日';//设置日期格式
$params['filename']='test_image'; //文件名
$params['height']=600; //高度
$params['width']=300; //宽度
$params['x_area']=560; //图形区域高度
$params['y_area']=280; //图形区域宽度
$data['chart_image']=$this->chart->draw_line_graph($params);//生成图片
$data['baseurl']=site_url ();
$this->load->view('test_view.html',$data);
} 复制代码
视图:test_view.html
最终生成的图表是这样的:
|
|