当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

12.3JpGraph库的使用

9/17/2020 9:40:31 PM 人评论

12.3JpGraph库的使用

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所示。

image

图12-7 bar2scalesex1.php页面效果

【案例分析】

(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所示。

image

图12-8 balloonex1.php页面效果

【案例分析】

(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();语句表示把此图传递到浏览器显示。

相关教程

共有条评论 网友评论

验证码: 看不清楚?