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笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
yii框架通过控制台命令创建定时任务示例
Apr 30 PHP
php实例分享之html转为rtf格式
Jun 02 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
PHP之密码加密的几种方式
Jul 29 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
php-fpm开启状态统计的方法详解
Jun 23 PHP
Laravel框架控制器的request与response用法示例
Sep 30 PHP
PHP 命名空间和自动加载原理与用法实例分析
Apr 29 PHP
如何在Mac上通过docker配置PHP开发环境
May 29 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
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php中chdir()函数用法实例
2014/11/13 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
List all the Databases on a SQL Server
2007/06/21 Javascript
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
jQuery对象[0]是什么含义?
2010/07/31 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
MUI 上拉刷新/下拉加载功能实例代码
2017/04/13 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python机器学习之神经网络(一)
2017/12/20 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
python 并发下载器实现方法示例
2019/11/22 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
护士自荐信范文
2013/12/15 职场文书
商务英语专业求职信范文
2014/01/28 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
保护环境建议书
2014/03/12 职场文书
新闻通讯稿模板
2015/07/22 职场文书
演讲开头怎么书写?
2019/08/06 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS