12.3 JpGraph库的使用
JpGraph是一个功能强大且十分流行的PHP外部图片处理库文件。它是建立在内部库文件GD2库之上的。它的优点是建立了很多方便操作的对象和函数,能够大大简化使用GD库对图片进行处理的编程过程。
12.3.1 JpGraph的安装
JpGraph的安装就是PHP对JpGraph类库的调用,可以采用多种形式。但是,首先都需要到Jpgraph的官方网站下载类库文件的压缩包。到http://jpgraph.net/download/下载最新的压缩包为Jpgraph3.5.0b1。
解压以后,如果是Linux系统,可以把它放置在lib目录下,并且使用下面语句重命名此类库的文件夹。
ln -s jpgraph-3.x jpgraph
如果是Windows系统,在本机WAMP的环境下,则可以把类库文件夹放在wamp目录下,或者放置在项目的文件夹下。
然后在程序中引用的时候,直接使用require_once ()命令,并且指出JpGraph类库相对于此应用的路径。
在本机环境下,把jpgraph文件夹放置在C:\wamp\www\phpimage文件夹之下。在应用程序的文件中加载此库,即require_once ('jpgraph/src/jpgraph.php');。
12.3.2 JpGraph的配置
使用JpGraph类前,需要对PHP系统的一些限制性参数进行修改。具体修改以下3个方面的内容。
(1)需要到php.ini中修改内存限制memory_limit至少为32m,本机环境为momery_limit = 64m。
(2)最大执行时间max_execution_time要增加,JpGraph类的官方推荐时间为30s,即max_execution_time =30。
(3)用“;”注释掉output_buffering选项。
12.3.3 制作柱形图与折线图统计图
安装设置生效以后,就可以使用此类库了。由于JpGraph有很多实例,读者可以轻松地通过实例来学习。
下面通过一个实例来学习JpGraph类的使用方法和技巧。
01 在phpimage文件夹下找到安装过的jpgraph类库文件夹,在其下的src文件夹下找到Examples文件夹。找到barlinealphaex1.php文件,将其复制到phpimage文件夹下。在浏览器中打开,代码如下。
<?php // content="text/plain; charset=utf-8" require_once ('jpgraph/src/jpgraph.php'); require_once ('jpgraph/src/jpgraph_bar.php'); require_once ('jpgraph/src/jpgraph_line.php'); $ydata = array(10,120,80,190,260,170,60,40,20,230); $ydata2 = array(10,70,40,120,200,60,80,40,20,5); $months = $gDateLocale->GetShortMonth(); $graph = new Graph(300,200); $graph->SetScale("textlin"); $graph->SetMarginColor('white'); $graph->SetMargin(30,1,20,5); $graph->SetBox(); $graph->SetFrame(false); $graph->tabtitle->Set('Year 2003'); $graph->tabtitle->SetFont(FF_ARIAL,FS_BOLD,10); $graph->ygrid->SetFill(true,'#DDDDDD@0.5','#BBBBBB@0.5'); $graph->ygrid->SetLineStyle('dashed'); $graph->ygrid->SetColor('gray'); $graph->xgrid->Show(); $graph->xgrid->SetLineStyle('dashed'); $graph->xgrid->SetColor('gray'); $graph->xaxis->SetTickLabels($months); $graph->xaxis->SetFont(FF_ARIAL,FS_NORMAL,8); $graph->xaxis->SetLabelAngle(45); $bplot = new BarPlot($ydata); $bplot->SetWidth(0.6); $fcol='#440000'; $tcol='#FF9090'; $bplot->SetFillGradient($fcol,$tcol,GRAD_LEFT_REFLECTION); $bplot->SetWeight(0); $graph->Add($bplot); $lplot = new LinePlot($ydata2); $lplot->SetFillColor('skyblue@0.5'); $lplot->SetColor('navy@0.7'); $lplot->SetBarCenter(); $lplot->mark->SetType(MARK_SQUARE); $lplot->mark->SetColor('blue@0.5'); $lplot->mark->SetFillColor('lightblue'); $lplot->mark->SetSize(6); $graph->Add($lplot); $graph->Stroke(); ?>
02 修改require_once ('jpgraph/jpgraph.php');为require_once ('jpgraph/src/jpgraph.php');,修改require_once ('jpgraph/ jpgraph_bar.php ');为require_once ('jpgraph/src/jpgraph_bar.php');,修改require_once ('jpgraph/jpgraph_line.php');为require_once ('jpgraph/src/jpgraph_line.php'); ,以载入本机JpGraph类库。
03 运行bar2scalesex1.php,结果如图12-7所示。
【案例分析】
(1)require_once ('jpgraph/src/jpgraph.php');require_once ('jpgraph/src/jpgraph_bar.php');和require_once ('jpgraph/src/jpgraph_line.php');语句加载了JpGraph基本类库jpgraph.php、柱状图类库jpgraph_bar.php和折线图类库jpgraph_line.php。
(2)$ydata= array(10,120,80,190,260,170,60,40,20,230);和$ydata2 = array(10,70,40,120, 200, 60,80,40,20,5);语句定义了柱状图和折线图在Y轴上的数据坐标,也是图形要表示的主要信息。
(3)$months = $gDateLocale->GetShortMonth();定义了月份使用短名表示。
(4)$graph = new Graph(300,200);语句创建图形$graph,高300像素,宽200像素。
(5)$graph->SetScale("textlin");语句确认刻度为自动生成的刻度形式。$graph-> SetMarginColor('white');语句确认图形边框颜色为白色。
(6)$graph->SetMargin(30,1,20,5);语句调整边框宽度。$graph->SetBox();语句在背景图上添加边框。$graph->SetFrame(false);语句取消整个图片的边框。
(7)$graph->tabtitle->Set('Year 2003');语句添加图片标题。$graph->tabtitle-> SetFont (FF_ARIAL,FS_BOLD,10);语句设定标题样式。
(8)$graph->ygrid->SetFill(true,'#DDDDDD@0.5','#BBBBBB@0.5');语句设定Y轴方向上的网格填充颜色和亮度。$graph->ygrid->SetLineStyle('dashed');语句设定Y轴方向上的网格线的样式为虚线。$graph->ygrid->SetColor('gray');语句设定Y轴方向上的网格线的颜色。
$graph->xgrid->Show();语句,$graph->xgrid->SetLineStyle('dashed');语句和$graph->xgrid-> SetColor('gray');语句是对X轴方向网格的同理设定。
(9)$graph->xaxis->SetTickLabels($months);语句为对X轴的设定,它使用的是先前定义的$months变量中的数据。$graph->xaxis->SetFont(FF_ARIAL,FS_NORMAL,8);语句设定样式。$graph->xaxis->SetLabelAngle(45);语句设定角度。
(10)$bplot = new BarPlot($ydata);语句采用先前的$ydata数据生成柱状图。$bplot ->SetWidth(0.6);定义宽度。$bplot->SetFillGradient ($fcol,$tcol,GRAD_LEFT_REFLECTION);填充柱状图,并且使用填充的渐变样式和两个渐变的颜色。$graph->Add($bplot);语句添加柱状图到图形中。
(11)$lplot = new LinePlot($ydata2);语句用$ydata2数组生成折线图。$lplot-> SetFillColor ('skyblue@0.5');和$lplot->SetColor('navy@0.7');语句定义折线区域的颜色和透明度。
(12)$lplot->mark->SetType(MARK_SQUARE);定义折线图标记点的类型。$lplot->mark-> SetColor('blue@0.5');定义颜色和透明度。$lplot->mark->SetSize(6);定义大小。$graph->Add ($lplot);语句添加折线图到图形中。
(13)$graph->Stroke();语句表示把此图传递到浏览器显示。
12.3.4 制作圆形统计图
下面就通过圆形统计图实例的介绍,来了解JpGraph类的使用,具体步骤如下。
01 在phpimage文件夹下找到安装过的jpgraph类库文件夹,在其下的src文件夹下找到Examples文件夹,再找到balloonex1.php文件,将其复制到phpimage文件夹下。在浏览器中打开,代码如下。
<?php require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_scatter.php'); $datax = array(1,2,3,4,5,6,7,8); $datay = array(12,23,95,18,65,28,86,44); function FCallback($aVal) { // This callback will adjust the fill color and size of // the datapoint according to the data value according to if( $aVal < 30 ) $c = "blue"; elseif( $aVal < 70 ) $c = "green"; else $c="red"; return array(floor($aVal/3),"",$c); } $graph = new Graph(400,300,'auto'); $graph->SetScale("linlin"); $graph->img->SetMargin(40,100,40,40); $graph->SetShadow(); $graph->title->Set("Example of ballon scatter plot"); $graph->yaxis->scale->SetGrace(50,10); $graph->xaxis->SetPos('min'); $sp1 = new ScatterPlot($datay,$datax); $sp1->mark->SetType(MARK_FILLEDCIRCLE); $sp1->value->Show(); $sp1->value->SetFont(FF_FONT1,FS_BOLD); $sp1->mark->SetCallback("FCallback"); $sp1->SetLegend('Year 2002'); $graph->Add($sp1); $graph->Stroke(); ?>
02 修改require_once ('jpgraph/jpgraph.php');为require_once ('jpgraph/src/jpgraph.php');,修改require_once ('jpgraph/jpgraph_scatter.php');为require_once ('jpgraph/src/jpgraph_scatter.php');,以载入本机JpGraph类库。
03 运行balloonex1.php,结果如图12-8所示。
【案例分析】
(1)require_once('jpgraph/src/jpgraph.php');语句和require_once ('jpgraph/src/ jpgraph_scatter. php');语句加载了JpGraph基本类库jpgraph.php和圆形图类库jpgraph_bar.php。
(2)$datax和$datay定义了两组要表现的数据。
(3)function FCallback($aVal){}函数定义了不同数值范围内图形的颜色。
(4)$graph = new Graph(400,300,'auto');语句生成图形。$graph->SetScale("linlin");生成刻度。$graph->img->SetMargin(40,100,40,40);设置图形边框。$graph->SetShadow();设置阴影。$graph->title->Set("Example of ballon scatter plot");设置标题。$graph->xaxis->SetPos('min');设置X轴的位置为初始值。
(5)$sp1 = new ScatterPlot($datay,$datax);生成数据表示图。$sp1->mark->SetType (MARK_FILLEDCIRCLE);设置数据表示图的类型。$sp1->value->Show();展示数据表示图。$sp1->value->SetFont(FF_FONT1,FS_BOLD);设置展示图的字体。$sp1->SetLegend('Year 2002');设置标题。
(6)$graph->Add($sp1);添加数据展示图到整体图形中。
(7)$graph->Stroke();语句表示把此图传递到浏览器显示。
共有条评论 网友评论