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 相关文章推荐
实现 win2003 下 mysql 数据库每天自动备份
Dec 06 PHP
php调用mysql数据 dbclass类
May 07 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
php file_get_contents取文件中数组元素的方法
Apr 01 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
May 29 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
JS验证邮件地址格式方法小结
2015/12/01 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
Python绑定方法与非绑定方法详解
2017/08/18 Python
Python决策树分类算法学习
2017/12/22 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
python实现excel读写数据
2021/03/02 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
浅谈python写入大量文件的问题
2018/11/09 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
Python文件操作及内置函数flush原理解析
2020/10/13 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
公司培训心得体会
2014/01/03 职场文书
摄影助理岗位职责
2014/02/07 职场文书
幼儿园招生广告
2014/03/19 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
网站出售协议书范文
2014/10/10 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
UNION CREATIVE《Re:从零开始的异世界生活》雷姆手办
2022/03/20 日漫