`

学习 JpGraph心得以及一些常见问题解决

    博客分类:
  • PHP
阅读更多

安装
JpGraph 的安装十分简便 :到 http://sourceforge.net/projects/jpgraph/ 下载,解压到应用程序的根路径即可。
使用范例一
这次我们以 Examples 目录下的 example0.php 为例来讲解一下如何初步使用 JpGraph。example0.php 代码如下:

代码片段
<?php
include ("../jpgraph.php"); //必须要引用的文件
include ("../jpgraph_line.php"); //包含曲线图文件

// y 轴数据,以数组形式赋值
$ydata = array(11,3,8,12,5,1,9,13,5,7);

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

// 设置刻度类型,x轴刻度可作为文本标注的直线刻度,y轴为直线刻度
$graph->SetScale("textlin");

// 创建坐标类,将y轴数据注入
$lineplot=new LinePlot($ydata);

// y 轴连线设定为蓝色
$lineplot->SetColor("blue");

// 坐标类注入图标类
$graph->Add($lineplot);

// 显示图
$graph->Stroke(); ?>
 


使用范例二
代码片段
<?php
$ydata = array(11,3,8,12,5,1,9,13,5,7);
// x 轴数据,作为 x 轴标注
$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');
$graph = new Graph(350,150,"auto");
$graph->SetScale("textlin");

// 设置图表大标题
$graph->title->Set(‘Example’);
$lineplot = new LinePlot($ydata);
$graph->Add($lineplot);

// 设置图表灰度四周边距,顺序为左右上下
$graph->img->SetMargin(60,20,20,50);

// 设置输出文件格式为 jpg,缺省为 png
$graph->img->SetImgFormat( "jpeg");

// y 轴坐标描点形状为菱形
$lineplot-> mark->SetType(MARK_DIAMOND );

// 加入 x 轴标注
$graph->xaxis->SetTickLabels($xdata);

// 定位 x 轴标注垂直位置应在最下方
$graph->xaxis->SetPos("min");

// 设置 x 轴标注文字为斜体,粗体,6号小字
$graph->xaxis->SetFont(FF_ARIAL,FS_BOLD,6);

// 设置 x 轴标注文字 45 度倾斜。注:前面 SetFont 必须为 FF_ARIAL
$graph->xaxis->SetLabelAngle(45);

// x 轴刻度间隔为 2
$graph->xaxis->SetTextLabelInterval(2);

// 标题和 y 轴标题字体为标准字体
$graph->title->SetFont(FF_FONT1,FS_BOLD,2);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);

// y 轴坐标点连线为蓝色加深加粗
$lineplot->SetColor("blue:0.5");
$lineplot->SetWeight(2);
$graph->yaxis->SetColor("black");
$graph->yaxis->SetWeight(2);

// 阴影效果
$graph->SetShadow();

// 显示图形
$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/’);
重新刷新即可
 
 
require_once('include/jpgraph.php'); //Graph类
require_once('include/jpgraph_line.php'); //LinePlot 类
$aAxisType = 'intlin'; //第一个int是X轴类型第2个lin是Y轴类型
$yScaleMin = 0; //Y轴最小值, 如果不需要设置,可以为空,或者NULL,下同
$yScaleMax = 11; //Y轴最大值
$xScaleMin = 1; //X轴最大值
$xScaleMax = 24; //X轴最大值

$unitType = '月份';

  $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');

$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');
$graph = new Graph($width = 780 , $height = 400); //创建新的Graph对象
$graph->SetScale($aAxisType, $yScaleMin, $yScaleMax, $xScaleMin, $xScaleMax); //设置刻度模式SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1)

$graph->img->SetMargin(40, 20, 50, 50) ; //设置图表边界
$title = date("Y-m-d H:i:s")."统计图";
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置图表标题的字体类型
$graph->title->Set($wholeTitle);
$graph->title->SetMargin (20);

$graph->xaxis->title->SetFont(FF_SIMSUN);
$graph->xaxis->title->Set($unitType);
$graph->xaxis->title->SetMargin(14);

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

$lineplot = new LinePlot($chartDataTmpArr); //创建要画的一地条曲线的对象
$lineplot->SetWeight(2); //曲线的线宽

$lineplot->SetLegend("进入");//设置图例文字
$graph->legend->Pos( 0.025, 0.08, "right","center" ); //图例文字框的位置 0.025,0.08 是以右上角为基准的,0.025是距左右距离,0.08是上下距离。
$graph->legend->SetLayout('1'); //如果有两条曲线,他们的图例文字并排放置。
$graph->legend->SetFrameWeight(0); //图例文字外框边框border设置为0
$graph->legend->SetFillColor('#C8C8C8'); //图例文字框内的填充颜色
$graph->legend->SetShadow('#C8C8C8', 0); //设置图例文字框的阴影部分颜色和border
$lineplot->SetColor("orange"); //设置曲线颜色
$graph->Add($lineplot); //在统计图上绘制曲线
    
$lineplot2 = new LinePlot($chartDataTmpArr2); //创建一条新的曲线对象
$lineplot2->SetLegend("出去");
$lineplot2->SetWeight(2);
$lineplot2->SetColor("blue"); 
$graph->Add($lineplot2);

$filename = 'images/strock/'.time().'.png';
$graph->Stroke($filename);
 

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

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

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

echo '<img src="'.$filename.'" />';

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

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

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

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

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

分享到:
评论

相关推荐

    PHP之JPgraph横坐标中文乱码问题

    今天突然提及的操作之php的JPgraph横坐标中文乱码问题,迫不及待 测试了一下, 尝试了几遍,都是乱码,好不容易没有乱码了,却报错。 解决JPgraph的横坐标显示,中文乱码问题,横坐标数组资源。

    \jpgraph-2.3.4\jpgraph-2.3.4\jpgraph-2.3.4\jpgraph-2.3.4

    \jpgraph-2.3.4\jpgraph-2.3.4\jpgraph-2.3.4\jpgraph-2.3.4\jpgraph-2.3.4\jpgraph-2.3.4\jpgraph-2.3.4\jpgraph-2.3.4\jpgraph-2.3.4

    jpgraph-2.3.tar

    它使得作图变成了一件非常简单的事情,你只需从数据库中取出相关数据,定义标题,图表类型,然后的事情就交给JpGraph,只需掌握为数不多的JpGraph内置函数(可以参照JpGraph附带例子学习),就可以画出非常炫目的...

    jpgraph-4.0.0

    jpgraph-4.0.0,以及Examples实例,PHP5,PHP7

    thinkphp使用jpgraph实例

    thinkphp使用jpgraph实例,防止新手陷入误区

    JpGraph安装方法

    JpGraph安装方法的ppt讲解,介绍JpGraph中每个文件的作用以及如何安装这个类库。

    jpgraph-3.0.7.tar.gz

    jpgraph-3.0.7.tar.gz

    JPgraph 类库

    jpgraph PHP画图工具,非常方便实用的工具

    jpgraph插件

    php实现报表(jpgraph插件实现)

    jpgraph-2.3.4.tar.zip

    解压缩jpgraph-2.3.4.tar.gz,jpgraph的类在src目录下,每次使用都要引用src/jpgraph.php,然后再引用具体的图表类型的类,例如要画折线图,就要引入src/jpgraph_line.php。官网:https://jpgraph.net/

    jpgraph-3.0

    jpgraph-3.0画图函数库,可以跟php调用,也可以给别的web调用

    jpgraph类库三种统计图

    里面index.php是汇总显示的,里面三个常见的统计图分别是:柱形图,折线图和饼状图;其中jpgraph类库需要自己下载,我下载的时候好像是4.0版本的,支持php5.0+,安装很简单,附有文档,解压后,需配置php.ini文件,...

    jpgraph文档

    强大的PHP jpgraph图形类库,支持3D饼状图、柱状图、折线图、自定义图片等等,很方便玩野统计图的实现....

    jpgraph for windows

    PHP下jpgraph库文件,支持柱状图、饼状图,是功能很强大的图表工具

    jpgraph统计图

    jpgraph,是一款综合了许多的统计分析图,其可以让你更加多彩绚丽的展现你的页面统计!

    jpgraph-2.3.4

    jpgraph-2.3.4.tar.gz

    Jpgraph创建统计图(案例 PDF)

    Jpgraph 统计图 饼状图 柱状图 折线图

    PHP借助jpgraph类库制作图表

    PHP借助jpgraph类库制作图表 一、 开发环境 1、环境搭建:Windows 7+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0。 2、文本编辑器:Sublime 3。 二、主要技术 本案例主要使用PHP 7中的Jpgraph 4.0.1类库来实现折线图、...

    jpgraph制作动态柱形图

    利用jpgraph来制作一个简单的柱形图,加深对JQ框架的理解。

    jpgraph-4.2.2.tar.gz

    jpgraph-4.2.2 官网完整版 可正常解压 用于PHP生成PDF 以来php gd2 完美适配HPH5 PHP7

Global site tag (gtag.js) - Google Analytics