首先我们要介绍一下我们在这篇文章中使用的PHP类Libchart,这是个外国人(非中国国籍的地球人,被称为外国人!)写的免费类!使用起来非 常简单。看出来了吧,我们是要用一个外国人写的PHP创建柱状图,饼状图,和线性图的类,来工作的。如果你要学习这个类的写法,你也可以把这个类下载下来看看外国人的思路!
我们开始吧,首先下载这个类 点击此处:下 载Libchart ,解压缩!
第一个用例,我们来创建一个纵向的柱状图:
首先我们包含这个类文件到我们的程序中,并且实例化这个类,程序如下:
requir_once(
'./Libchart/classes/libchart.php'
)
;
$chart
=
new
VerticalBarChart(
500
,
250
)
;
//参数表示需要创建的图像的宽和高
$dataSet
=
new
XYDataSet(
)
;
//实例化一个XY轴数据对象
//为这个对象增加四组数据集合,Point对象的第一个参数表示X轴坐标,第二个表示Y轴坐标
$dataSet
->
addPoint
(
new
Point(
"Jan 2005"
,
273
)
)
;
$dataSet
->
addPoint
(
new
Point(
"Feb 2005"
,
321
)
)
;
$dataSet
->
addPoint
(
new
Point(
"March 2005"
,
442
)
)
;
$dataSet
->
addPoint
(
new
Point(
"April 2005"
,
711
)
)
;
//把这个数据集合传递给图形对象
$chart
->
setDataSet
(
$dataSet
)
;
//设置图形的标题,并把它作为一个png文件渲染
$chart
->
setTitle
(
"Monthly usage for www.example.com"
)
;
$chart
->
render
(
"generated/demo1.png"
)
;
//这里需要一个路径和文件名称
就这么简单一个像下图一样美丽的柱状图就出来了。
PHP创建一个饼状图的过程和上边说的柱状图大同小异 ,具体实例代码如下:
$chart
=
new
PieChart(
500
,
250
)
;
$dataSet
=
new
XYDataSet(
)
;
$dataSet
->
addPoint
(
new
Point(
"Mozilla Firefox (80)"
,
80
)
)
;
$dataSet
->
addPoint
(
new
Point(
"Konqueror (75)"
,
75
)
)
;
$dataSet
->
addPoint
(
new
Point(
"Other (50)"
,
50
)
)
;
$chart
->
setDataSet
(
$dataSet
)
;
$chart
->
setTitle
(
"User agents for www.example.com"
)
;
$chart
->
render
(
"generated/demo2.png"
)
;
创建饼状图 就一点值得说一下就是Point的参数,第一个参数是占用比例的名称,第二个是数据,并不存在XY坐 标;图如下:
创建一个线性图, 这个有点和上边两个不同,就是数据集合的不同。我们也看到了XYDataSet这个数据集合, 另外在这个类中还有一个数据集合XYSeriesDataSet(),这个其实是一个比XYDataSet更大的集合而已,他的元素就是 XYDataSet,看一下例子和这段创建PHP线性图的程序,你一定就明白了:
include
"../libchart/classes/libchart.php"
;
$chart
=
new
LineChart(
500
,
250
)
;
$serie1
=
new
XYDataSet(
)
;
$serie1
->
addPoint
(
new
Point(
"06-01"
,
273
)
)
;
$serie1
->
addPoint
(
new
Point(
"06-02"
,
421
)
)
;
$serie1
->
addPoint
(
new
Point(
"06-03"
,
642
)
)
;
$serie1
->
addPoint
(
new
Point(
"06-04"
,
799
)
)
;
$serie1
->
addPoint
(
new
Point(
"06-05"
,
1009
)
)
;
$serie1
->
addPoint
(
new
Point(
"06-06"
,
1106
)
)
;
$serie2
=
new
XYDataSet(
)
;
$serie2
->
addPoint
(
new
Point(
"06-01"
,
280
)
)
;
$serie2
->
addPoint
(
new
Point(
"06-02"
,
300
)
)
;
$serie2
->
addPoint
(
new
Point(
"06-03"
,
212
)
)
;
$serie2
->
addPoint
(
new
Point(
"06-04"
,
542
)
)
;
$serie2
->
addPoint
(
new
Point(
"06-05"
,
600
)
)
;
$serie2
->
addPoint
(
new
Point(
"06-06"
,
850
)
)
;
//这些和前面的两个看起来没有什么区别,关键在下边这一段,需要自己理解一下啦:
$dataSet
=
new
XYSeriesDataSet(
)
;
$dataSet
->
addSerie
(
"Product 1"
,
$serie1
)
;
$dataSet
->
addSerie
(
"Product 2"
,
$serie2
)
;
$chart
->
setDataSet
(
$dataSet
)
;
$chart
->
setTitle
(
"Sales for 2006"
)
;
$chart
->
render
(
"generated/demo3.png"
)
;
画出这样一个图来:
然后,把数据交给图形实例,然后渲染图形,和创建柱状图和线性图是一样的。其实国外还有好多创建柱状图和饼状图 的类程序,有的还 相当的NB,例如结合flash的,结合web css的不一而足,这个用起来相对简单一点,大家尽管拿去用好了!