JpGraph

  1. <?php  

  2. include ("../jpgraph.php"); //必须要引用的文件  

  3. include ("../jpgraph_line.php"); //包含曲线图文件  

  4.   

  5. // y 轴数据,以数组形式赋值  

  6. $ydata = array(11,3,8,12,5,1,9,13,5,7);  

  7.   

  8. // 创建 Graph 类,350 为宽度,250 长度,auto:表示生成的缓存文件名是该文件的文件名+扩展名(.jpg .png .gif ……)  

  9. $graph = new Graph(350,250,"auto");  

  10.   

  11. // 设置刻度类型,x轴刻度可作为文本标注的直线刻度,y轴为直线刻度  

  12. $graph->SetScale("textlin");  

  13.   

  14. // 创建坐标类,将y轴数据注入  

  15. $lineplot=new LinePlot($ydata);  

  16.   

  17. // y 轴连线设定为蓝色  

  18. $lineplot->SetColor("blue");  

  19.   

  20. // 坐标类注入图标类  

  21. $graph->Add($lineplot);  

  22.   

  23. // 显示图  

  24. $graph->Stroke(); ?>  

 


使用范例二
代码片段

Php代码

  1. <?php  

  2. $ydata = array(11,3,8,12,5,1,9,13,5,7);  

  3. // x 轴数据,作为 x 轴标注  

  4. $xdata = array('2007-3-01','2007-3-03','2007-3-05','2007-3-07','2007-3-09','2007-3-01','2007-3-11','2007-3-13','2007-3-15');  

  5. $graph = new Graph(350,150,"auto");  

  6. $graph->SetScale("textlin");  

  7.   

  8. // 设置图表大标题  

  9. $graph->title->Set(‘Example’);  

  10. $lineplot = new LinePlot($ydata);  

  11. $graph->Add($lineplot);  

  12.   

  13. // 设置图表灰度四周边距,顺序为左右上下  

  14. $graph->img->SetMargin(60,20,20,50);  

  15.   

  16. // 设置输出文件格式为 jpg,缺省为 png  

  17. $graph->img->SetImgFormat( "jpeg");  

  18.   

  19. // y 轴坐标描点形状为菱形  

  20. $lineplot-> mark->SetType(MARK_DIAMOND );  

  21.   

  22. // 加入 x 轴标注  

  23. $graph->xaxis->SetTickLabels($xdata);  

  24.   

  25. // 定位 x 轴标注垂直位置应在最下方  

  26. $graph->xaxis->SetPos("min");  

  27.   

  28. // 设置 x 轴标注文字为斜体,粗体,6号小字  

  29. $graph->xaxis->SetFont(FF_ARIAL,FS_BOLD,6);  

  30.   

  31. // 设置 x 轴标注文字 45 度倾斜。注:前面 SetFont 必须为 FF_ARIAL  

  32. $graph->xaxis->SetLabelAngle(45);  

  33.   

  34. // x 轴刻度间隔为 2  

  35. $graph->xaxis->SetTextLabelInterval(2);  

  36.   

  37. // 标题和 y 轴标题字体为标准字体  

  38. $graph->title->SetFont(FF_FONT1,FS_BOLD,2);  

  39. $graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);  

  40.   

  41. // y 轴坐标点连线为蓝色加深加粗  

  42. $lineplot->SetColor("blue:0.5");  

  43. $lineplot->SetWeight(2);  

  44. $graph->yaxis->SetColor("black");  

  45. $graph->yaxis->SetWeight(2);  

  46.   

  47. // 阴影效果  

  48. $graph->SetShadow();  

  49.   

  50. // 显示图形  

  51. $graph->Stroke(); ?>  

 

可能遇到的问题
由于涉及到图象输出,所以在某些GUI配置不正确的系统中就可能会遇到一些显示问题。最常见的是“找不到 XX 字体(比如FF_ARIAL 字体)”,遇到这种情况,我们可采取以下步骤解决:
1. 首先到具备这些字体的系统(比如 Windows 等系统)中或可以下载这些字体的地方把相关的字体罗列出来,然后把他们复制到某个我们 WEB 程序可以访问的目录(假定为 /www/fonts )内。
以 FF_ARIAL 字体为例,我们可以在 Windows 系统的 $windows/fonts 找到 arialbd.ttf 、arialbi.ttf、ariali.ttf、arial.ttf 这几个字体文件,然后将其复制到 /www/fonts。
2. 修改jpgraph.php文件。
找到
DEFINE('TTF_DIR','/usr/X11R6/lib/X11/fonts/truetype/');
这一行,将其改为
DEFINE('TTF_DIR',’/www/fonts/’);
重新刷新即可

 

 

Php代码

  1. require_once('include/jpgraph.php'); //Graph类  

  2. require_once('include/jpgraph_line.php'); //LinePlot 类  

  3. $aAxisType = 'intlin'//第一个int是X轴类型第2个lin是Y轴类型  

  4. $yScaleMin = 0; //Y轴最小值, 如果不需要设置,可以为空,或者NULL,下同  

  5. $yScaleMax = 11; //Y轴最大值  

  6. $xScaleMin = 1; //X轴最大值  

  7. $xScaleMax = 24; //X轴最大值  

  8.   

  9. $unitType = '月份';  

  10.   

  11.   $chartDataTmpArr = array('1' => '1''2' => '0''3' => '4''4' => '5''5' => '7''6' => '8''7' => '4''8' => '6''9' => '8''10' => '7''11' => '4''12' => '5''13' => '4''14' => '6''15' => '4''16' => '2''17' => '2''18' => '2''19' => '2''20' => '7''21' => '6''22' => '1''23' => '4''24' => '4');  

  12.   

  13. $chartDataTmpArr2 = array('1' => '2''2' => '0''3' => '2''4' => '2''5' => '8''6' => '9''7' => '5''8' => '7''9' => '9''10' => '7''11' => '4''12' => '7''13' => '2''14' => '4''15' => '5''16' => '6''17' => '0''18' => '3''19' => '6''20' => '5''21' => '8''22' => '9''23' => '4''24' => '4');  

  14. $graph = new Graph($width = 780 , $height = 400); //创建新的Graph对象  

  15. $graph->SetScale($aAxisType$yScaleMin$yScaleMax$xScaleMin$xScaleMax); //设置刻度模式SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1)  

  16.   

  17. $graph->img->SetMargin(40, 20, 50, 50) ; //设置图表边界  

  18. $title = date("Y-m-d H:i:s")."统计图";  

  19. $graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置图表标题的字体类型  

  20. $graph->title->Set($wholeTitle);  

  21. $graph->title->SetMargin (20);  

  22.   

  23. $graph->xaxis->title->SetFont(FF_SIMSUN);  

  24. $graph->xaxis->title->Set($unitType);  

  25. $graph->xaxis->title->SetMargin(14);  

  26.   

  27. $graph->legend->SetLineWeight(2); //设置图例文字的字体   

  28.   

  29. $lineplot = new LinePlot($chartDataTmpArr); //创建要画的一地条曲线的对象  

  30. $lineplot->SetWeight(2); //曲线的线宽  

  31.   

  32. $lineplot->SetLegend("进入");//设置图例文字  

  33. $graph->legend->Pos( 0.025, 0.08, "right","center" ); //图例文字框的位置 0.025,0.08 是以右上角为基准的,0.025是距左右距离,0.08是上下距离。  

  34. $graph->legend->SetLayout('1'); //如果有两条曲线,他们的图例文字并排放置。  

  35. $graph->legend->SetFrameWeight(0); //图例文字外框边框border设置为0  

  36. $graph->legend->SetFillColor('#C8C8C8'); //图例文字框内的填充颜色  

  37. $graph->legend->SetShadow('#C8C8C8', 0); //设置图例文字框的阴影部分颜色和border  

  38. $lineplot->SetColor("orange"); //设置曲线颜色  

  39. $graph->Add($lineplot); //在统计图上绘制曲线  

  40.       

  41. $lineplot2 = new LinePlot($chartDataTmpArr2); //创建一条新的曲线对象  

  42. $lineplot2->SetLegend("出去");  

  43. $lineplot2->SetWeight(2);  

  44. $lineplot2->SetColor("blue");   

  45. $graph->Add($lineplot2);  

  46.   

  47. $filename = 'images/strock/'.time().'.png';  

  48. $graph->Stroke($filename);  

 

如果这里直接调用Stroke()函数,图片会从cache里直接输出,但是有个问题,网页上只能为这个曲线图输出,

别的内容在这个曲线图之前输出就会出错。别的内容放在这个曲线图之后都没输出了。

所以需要传递一个文件名,这样在本地就会存储内容。

echo '<img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="'.$filename.'" />';

存放图片的文件夹会有比较多的图片,如果是LINUX服务器的话可以设置一个cronjob,定时清空下图片。

还有另一种方法 比如画图文件为 drawImage.php 可以用另一个文件viewImage.php以内容<img src ="drawImage.php" /> 的方法把图片载入进来,这样可以不用生成图片文件, 

而且图片显示位置可以随便放. 不过这样做是有问题的,比如说他要载入的数据是动态的, 

那就没办法把那么一大串的数组也都穿进去. 或许可以用serialize 函数来处理一堆的数据,

再在drawImage.php中用unserialize函数还原数据.没试过. 


你可能感兴趣的:(JpGraph)