JpGraph php柱状图使用介绍


Posted in PHP onAugust 23, 2011

JpGraph简介

以前用PHP作图时必须要掌握复杂抽象的画图函数,或者借助一些网上下载的花柱形图、饼形图的类来实现。没有一个统一的chart类来实现图表的快速开发。

现在我们有了一个新的选择:JpGraph。专门提供图表的类库。它使得作图变成了一件非常简单的事情,你只需从数据库中取出相关数据,定义标题,图表类型,然后的事情就交给JpGraph,只需掌握为数不多的JpGraph内置函数(可以参照JpGraph附带例子学习),就可以画出非常炫目的图表!

JpGraph安装方法:
1、

先到各大网站上下载最新的版本。如: https://3water.com/codes/38194.html
2、

确保你的PHP版本最低为4.04(最好是4.1.1),并且支持GD库。必须确保GD库可以正常运行,可以通过运行phpinfo()来查看GD库的信息是否存在的方法来判断。同时要有要求GD库的版本应为2.0,而不是1.0。
3、

将下载的JpGraph压缩包解压到任意文件夹。
4、

设置jpgraph.php(jpgraph的主配置文件)。设置jpgraph的cache(缓存)文件夹,和TTF(字体)文件夹。

分别在35行和38行

35 // DEFINE("CACHE_DIR","/tmp/jpgraph_cache/"); 

38 // DEFINE("TTF_DIR","/usr/X11R6/lib/X11/fonts/truetype/");

Linux系统改为:

DEFINE("CACHE_DIR","/tmp/jpgraph_cache/");' 

DEFINE("TTF_DIR","/usr/X11R6/lib/X11/fonts/truetype/");

Windows系统改为:

DEFINE("CACHE_DIR","c:/apache/htdocs/ jpgraph_cache/");' 

DEFINE("TTF_DIR","c:/windows/fonts");

注意事项:

(1)cache(缓存)文件夹路径可以自己定义,而TTF(字体)文件夹必须是%system%/Fonts。

(2)确保PHP对cache(缓存)文件夹有写的权限。
5、

完成上述设置后就可以使用JpGraph了,可以先将JpGraph的例子copy到htdocs文件夹中,运行一下看看。呵呵,200多个例子,包含各类图表,够学一阵子的。

在实际使用中,笔者还遇到了一些问题,比如字体错误等等,还在研究中……
从数据库中读取数据到jpgraph图表中
1、

将./src/Examples目录中的文件example16.2.php以及./src目录中的文件jpgraph_bar.php、jpgraph_gradient.php、jpgraph_line.php、jpgraph_plotmark.inc、jpgraph.php拷贝到同一目录下。
2、

建立数据库jpg,数据库表test

建立2个字段:

id(主键):int

number:int

并添加一些数据
3、

修改example16.2.php

修改后的代码

<?php 

include ("jpgraph.php"); 

include ("jpgraph_line.php"); 

include ("jpgraph_bar.php"); 

$connect=mysql_connect("localhost","root",""); 

mysql_select_db("jpg",$connect); 

$query=mysql_query("select * from test",$connect); 

$i=0; 

while ($array=mysql_fetch_array($query)) { 

$l2datay[$i]=$array["number"]; 

$i++; 

} 

mysql_close($connect); 

// Create the graph. 

$graph = new Graph(400,200,"auto"); 

$graph->SetScale("textlin"); 

$graph->img->SetMargin(40,130,20,40); 

$graph->SetShadow(); 

// Create the bar plot 

$bplot = new BarPlot($l2datay); 

$bplot->SetFillColor("orange"); 

$bplot->SetLegend("Result"); 

// Add the plots to t'he graph 

$graph->Add($bplot); 

$graph->title->Set("Adding a line plot to a bar graph v1"); 

$graph->xaxis->title->Set("X-title"); 

$graph->yaxis->title->Set("Y-title"); 

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

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

$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD); 

//$graph->xaxis->SetTickLabels($datax); 

//$graph->xaxis->SetTextTickInterval(2); 

// Display the graph 

$graph->Stroke(); 

?>

4、

刷新页面即可看到结果
历史信息

网络优化,300*200的图片大小大概为2K,但普通图片要比JpGraph生成的大4-5K

支持GD1和GD2,并且JpGraph会自动探测系统安装了哪个库

支持多种图表样式,包括常见的网状图、花柱形图、饼形图(2D和3D的都可以)等等

支持3D透明,α混合技术

支持超过400种的已命名颜色

支持多种方式带背景图片的绘图

支持生成的图表网络缓存以减轻HTTP服务器负担

2009年9月17日:更新JpGraph 1.27.1。

2009年4月18日:更新JpGraph 1.27和JpGraph 2.34。

12月2日:今日有两位phpchina的朋友加入我们的翻译团队:刺猬和Deman。

2008年6月28日:JpGraph中文站发布,虽然这是用ASP制作的网站,但并不代表站长偏爱ASP

2008年6月15日:JpGraph 1.26发布。修复了饼形图分割片问题。也许这将是1.x发布版宣布停止更新后的最后一版2

008年6月14日:JpGraph 2.33发布

PHP 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
表单复选框向PHP传输数据的代码
Nov 13 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
PHP源代码数组统计count分析
Aug 02 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
php实现搜索类封装示例
Mar 31 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
php微信公众号开发之音乐信息
Oct 20 PHP
php解决约瑟夫环算法实例分析
Sep 30 PHP
php报表之jpgraph柱状图实例代码
Aug 22 #PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 #PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 #PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 #PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 #PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
Aug 15 #PHP
11个PHP 分页脚本推荐
Aug 15 #PHP
You might like
PHP聊天室技术
2006/10/09 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
PHP 第一节 php简介
2012/04/28 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
详解React 元素渲染
2020/07/07 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
vue实现PC端分辨率适配操作
2020/08/03 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
判断网页编码的方法python版
2016/08/12 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
Django中的cookie和session
2019/08/27 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
销售总监岗位职责
2014/01/04 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
给老师的检讨书
2014/02/11 职场文书
党员违纪检讨书
2014/02/18 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript