PHP PEAR中创建图表的Image_Graph Package入门

Show All   1 2

转载请注明出处:Just Do IT :: http://www.toplee.com/blog/?p=169
TrackBack URL: http://www.toplee.com/blog/wp-trackback.php?p=169

在很多时候,我们在进行php开发中需要创建一些图表。在创建图表的方法中,我们可以使用传统的从电子表格软件导出生成,比如使用excel等工具来生成,这样的方法有些局限性,在web应用中我们可以借用PHP来实现。PHP提供了不少强大的图表操作库,JpGraph算是最知名的,但是他涉及到商业license的问题。这里我介绍大家一个PHP Pear中的图表操作包 Image_Graph,这是个在GPL协议下开发的包。虽然这个包的文档很少,但是它具有的强大功能还是得到了广泛的认同,在使用这个包之前,你必须了解PHP的Pear架构同时已经成功的安装了Pear,相关的文档我就不在这里介绍了,很多这样的文档可以Google到。

ImageGraph的前身是GraPHPite,它是SourceForge的一个项目,后来被收录并整合到了Pear中并命名为Image_Graph。在Image_Graph中,你可以对图表、表格、曲线等进行各种自由的控制。

使用Image_Graph的必要条件:
PHP 4.3.0 or later (it works with PHP 5)
GD (GD 2 is recommended)
PEAR support
The Image_Canvas package
The Image_Color package

安装
安装Image_Graph非常简单,你可以使用PEAR安装命令来完成,相关的文档请参照Pear的官方网站。默认的安装过程和下面类似:

$ pear list
Installed packages:
===================
Package Version State
Archive_Tar 1.1 stable
Console_Getopt 1.2 stable
DB 1.6.2 stable
HTTP 1.2.2 stable
Mail 1.1.3 stable
Net_SMTP 1.2.6 stable
Net_Socket 1.0.1 stable
PEAR 1.3.2 stable
XML_Parser 1.0.1 stable
XML_RPC 1.1.0 stable

(有两种主要的方式来安装PEAR包,你可以直接从PEAR的服务器上安装,也可以下载安装包到本地机器上进行安装,两种方法基本相同。由于有些Pear的包还处于alpha阶段,包括Image_Graph包,所以你可能在Pear的stable列表中找不到想要的包,这时您就只能选择去下载安装包到本地机器上完成安装,在下载的时候一定注意文档里面对该包的依赖关系说明,比如Image_Graph包就需要依赖 Image_Color, Image_Canvas,不过你需要同时注意,也许在你看到这个文档的时候,包的版本已经更新,同时依赖关系可能也发生了变化,此时您最好参照最新的帮助文档来进行。在安装的过程中,您最好要按照正确的依赖包安装顺序来进行,否则可能会出现安装失败。)

$ pear install Image_Color-1.0.2.tgz
install ok: Image_Color 1.0.2

$ pear install Image_Canvas-0.3.0.tgz
install ok: Image_Canvas 0.3.0

$ pear install Image_Graph-0.7.2.tgz
Optional dependencies:
package `Numbers_Roman’ is recommended to utilize some features.
package `Numbers_Words’ is recommended to utilize some features.
install ok: Image_Graph 0.7.2

Numbers_Roman 和 Numbers_Words 依赖包是可选的用来进行一些扩展功能实现,这里我们暂时不涉及。

一个简单的图表例子:
创建一个条形的图表是最简单的,这里我们通过编码的方式来简单实现,数据源也是通过在代码中写入测试数据来提供,更复杂的方式可以从数据库或者别的数据源中取得。
image_graph.php

addNew(‘plotarea’);
$Dataset =& Image_Graph::factory(‘dataset’);
$Dataset->addPoint(‘Jan’, 5);
$Dataset->addPoint(‘Feb’, 13);
$Dataset->addPoint(‘March’, 10);
$Plot =& $Plotarea->addNew(‘bar’, &$Dataset);

$Plot->setLineColor(‘green’);
$Plot->setFillColor(‘cadetblue’);
$Plot->setBackgroundColor(‘green@0.1’);

$Graph->done();
?>

image_graph1
第一行代码:

include ‘Image/Graph.php’;

这是必须包含的代码,用来调入image_graph包。
第二行代码:

$Graph =& Image_Graph::factory(‘graph’, array(600, 300));

申明一个图表对象,同时创建一个宽600 pixels 高 300 pixels的画布. 这里使用了工厂的设计模式,你不用一定使用这样的方式,但是这种方式将是最方便的。有关工厂模式可以参考设计模式方面的文档,这里不讨论。
下一行:

$Dataset =& Image_Graph::factory(‘dataset’);

创建一个数据集,这个用来存放创建图表所需的各种数据,接下来使用数组的方式进行数据存放,还有另外的数据存储方式在后面说明。
后面三行:

$Dataset->addPoint(‘Jan’, 5);
$Dataset->addPoint(‘Feb’, 13);
$Dataset->addPoint(‘March’, 10);

输入必要的数据.
下一行:

$Plot =& $Plotarea->addNew(‘bar’, &$Dataset);

创建一个名为bar的象限,可以支持多个象限,这里我们只使用一个。

$Graph->done();

完成图表创建!

增加一些颜色到图表中
上面创建的图片显然太过简单,下面给图片增加一些颜色。
image_graph2.php

addNew(‘plotarea’);
$Dataset =& Image_Graph::factory(‘dataset’);
$Dataset->addPoint(‘Jan’, 5);
$Dataset->addPoint(‘Feb’, 13);
$Dataset->addPoint(‘March’, 10);
$Plot =& $Plotarea->addNew(‘bar’, &$Dataset);

$Plot->setLineColor(‘green’);
$Plot->setFillColor(‘cadetblue’);
$Plot->setBackgroundColor(‘green@0.1’);addNew(‘plotarea’);
$Dataset =& Image_Graph::factory(‘dataset’);
$Dataset->addPoint(‘Jan’, 5, ‘J’);
$Dataset->addPoint(‘Feb’, 13, ‘F’);
$Dataset->addPoint(‘March’, 10, ‘M’);
$Plot =& $Plotarea->addNew(‘bar’, &$Dataset);

$Plot->setLineColor(‘green’);
$Plot->setBackgroundColor(‘green@0.1’);

$fill =& Image_Graph::factory(‘Image_Graph_Fill_Array’);
$fill->addColor(‘red’, ‘J’);
$fill->addColor(‘blue’, ‘F’);
$fill->addColor(‘yellow’, ‘M’);
$Plot->setFillStyle($fill);

$Graph->done();
?>

image_graph2
你可以使用更多的颜色,有关颜色名称的定义可以参考 147 SVG color names

使用多种颜色
下面的例子对图表中不同的部分使用不同的颜色。
image_graph3.php

addNew(‘plotarea’);
$Dataset =& Image_Graph::factory(‘dataset’);
$Dataset->addPoint(‘Jan’, 5, ‘J’);
$Dataset->addPoint(‘Feb’, 13, ‘F’);
$Dataset->addPoint(‘March’, 10, ‘M’);
$Plot =& $Plotarea->addNew(‘bar’, &$Dataset);

$Plot->setLineColor(‘green’);
$Plot->setBackgroundColor(‘green@0.1’);

$fill =& Image_Graph::factory(‘Image_Graph_Fill_Array’);
$fill->addColor(‘red’, ‘J’);
$fill->addColor(‘blue’, ‘F’);
$fill->addColor(‘yellow’, ‘M’);
$Plot->setFillStyle($fill);

$Graph->done();
?>

image_graph3

Show All   1 2
You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Comments are closed.