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 相关文章推荐
php.ini中文版
Oct 09 PHP
mysql中存储过程、函数的一些问题
Feb 14 PHP
PHP日期处理函数 整型日期格式
Jan 12 PHP
用PHP书写安全的脚本代码
Feb 05 PHP
解析php5配置使用pdo
Jul 03 PHP
php实现文件下载简单示例(代码实现文件下载)
Mar 10 PHP
PHP实现的比较完善的购物车类
Dec 02 PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
如何在centos8自定义目录安装php7.3
Nov 28 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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
php5.5中类级别的常量使用介绍
2013/10/02 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
Python入门篇之数字
2014/10/20 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
Python中is和==的区别详解
2018/11/15 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
python编写微信公众号首图思路详解
2019/12/13 Python
Python 列表的清空方式
2020/01/13 Python
Python实现动态循环输出文字功能
2020/05/07 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
Python中的With语句的使用及原理
2020/07/29 Python
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
会计自荐书
2013/12/02 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
2014年销售工作总结
2014/12/01 职场文书
vue实现登陆页面开发实践
2022/05/30 Vue.js
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle