RSS
  • 首页
  • 关于

在CodeIgniter中使用pChart

2009年8月16日 by admin | 0 Comment »

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,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
< ?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;  //返回文件名
    }
}

然后控制器中这样调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function test(){
     $this->load->library('chart'); //载入pChart库
 
   $params['data']=array(100,200,150,600,230,150,510); //要显示的数据
   for($i=0;$i&lt;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);
}

视图中输出就很简单了:

1
2
3
4
5
6
<html>
<head><title></title></head>
<body>
<img src="<?php echo $baseurl.$chart_image;?/>" />
</body>
</html>

关于pChart的更多用法,请参考它的在线文档:

http://pchart.sourceforge.net/documentation.php


CodeIgniter | Tags: CodeIgniter, pChart



发表评论





IT狂人的博客

  • 声明

    本博文章及相关作品(包括但不限于文字、图片),除特别说明为转载外,均属本人原创,依据《国家知识产权法》、《著作权法》和《信息网络传播权保护条例》,原创知识产权、版权均为本人所有,本人享有著作权,并受法律保护。

    文章欢迎转载,但请事先与本人联系:email
    未经本人许可,任何人不得转载或使用整体或任何部分的内容。未尽事宜,依据相关法律法规处理。

  • 分类目录

    • ASP .Net (1)
    • CodeIgniter (8)
    • PHP (8)
    • Web (5)
    • 未分类 (1)
    • 杂谈 (4)
    • 译文 (7)
    • 音乐&电影 (1)
  • 文章索引模板

    • 2010年七月 (5)
    • 2010年五月 (1)
    • 2010年四月 (1)
    • 2010年三月 (2)
    • 2010年二月 (1)
    • 2010年一月 (2)
    • 2009年十二月 (1)
    • 2009年十月 (2)
    • 2009年九月 (3)
    • 2009年八月 (10)
  • 标签

    AJAX API AVC CakePHP CHM CodeIgniter CURD Django DroidSansFallback eaccelerator footer Framework Fran Healy Git helper IT Kohana MVC MVP MYSQL NetBeans Oasis ORM pChart pdf PHP phpMyAdmin Ruby tcpdf techified time Travis Twitter Web windows Wordpress XML Zend 传记 外链 大写 孔乙己 框架 盗链 过滤
  •  

    2009年八月
    一 二 三 四 五 六 日
        九 »
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31  
  • Playlist


  • 最近评论

    • cnenc 在 使用PHP的Glob()函数来遍历文件夹 上的评论
    • TCPDF开源项目 - PDF - php开源项目 - php免费pdf生成软件 - php开源软件 - TCPDF - 开源网 在 使用TCPDF输出完美的中文PDF文档 上的评论
    • 匿名 在 在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载) 上的评论
    • 笑话大王 在 使用TCPDF输出完美的中文PDF文档 上的评论
    • admin 在 在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载) 上的评论
  • 链接

    • cnBeta.COM
    • CodeIgniter 中国
    • jQuery中文社区
    • Lily Allen
    • Mtime时光网
    • W3School
    • 小众软件
    • 破烂熊乐园
    • 韩寒
Copyright © 2010 IT狂人的博客 All Rights Reserved. XHTML CSS THEME by I SOFTWARE REVIEWS