PHP图标类库 - JpGraph使用详解
2015-09-04 18:45
726 查看
http://w3note.com/web/181.html
微信平台开发的推广支持应用里,为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,借此可以通过统计不同场景扫描的二维码的结果来获取商业信息。
为了更形象地展示统计结果,可以使用php作图,不过这需要掌握复杂抽象的画图函数,这里推荐使用php的JpGraph图表类库,它使得作图变成了一件非常简单的事情,你只需从数据库中取出相关数据,定义标题,图表类型,然后的事情就交给JpGraph,只需掌握为数不多的JpGraph内置函数(可以参照JpGraph附带例子学习),就可以画出非常炫目的图表!
因为我最近也在做phpcmw微信插件用户信息统计这块,所以对JpGraph作了一番研究应用。为避免初学者走我走过的弯路,我把调试记录整 理出来,分享给大家。
通过本文你至少可以掌握以下技巧:
1、能够使用JpGraph画出各式各样的图表
2、解决中文乱码
一、开启GD库
Jpgraph需要GD库的支持,所以在调式JpGraph之前,确保GD库已开启,这很重要,不然后面的工作就没办法展开了。GD库在PHP5中是被默认安装的,我们只需开启GD库就可以了。
打开php.ini文件,找到“;extension=php_gd2.dll”选项,将其前的分号“;”去掉,如图所示
然后保存修改后的文件并重新启动apache服务器。可以通过phpinfo()函数来获取GD2函数库的安装信息,验证GD库是否安装成功。
二、使用方法
在使用JpGraph时,最好弄明白你使用的是哪一个版本,千万不要弄错,不然就会张冠李戴,让你调得头晕目眩的。也不要从网上找一些片断代码来调试,除非它是完整的,不然也会让你吃不了兜着走的了。唠叼就到这里了,下面开始调试。
运行环境
操作系统 W7
代码运行环境 apache+php5.3
JpGraph版本 jpgraph-3.5.0b1(点击这里下载或者到官网http://jpgraph.net/download/下载)
解压下载的jpgraph-3.5.0b1压缩包,会看到一些目录:
src:图表生成所依赖的代码包,其子目录Examples里有许多的实例。
src\Examples:里面包函许多实例,使用它们可以制作各种各样的图表
docs :jpgraph的开发文档,但全是英文的.。
docs\chunkhtml:里面有许多案例及附有图表,通过它我们可以参考一下我们所需要的图表。
在网站根目录建一个文件夹test,然后把把docs和src文件夹拷贝到前面所创建的目录test里,重命名src为jpgraph,这里因为Examples里面的实例文件加载的路径都是“require_once ('jpgraph/jpgraph.php');”
实例
把jpgraph\Examples\accbarex1.php拷贝到test目录(和jpgraph同一目录),然后打开打开http://localhost/test/accbarex1.php,我们就会看到生成的图
哗,这是我们使用PHP作图很难实现的!
来看一下它的源码吧:
JpGraph的难点是中文乱码的解决,本来还想把这个问题一块解决的,但似乎篇幅有点长了,留到下一篇吧
小结:调试JpGraph,需要注意其运行环境、版本、操作系统以及代码的完整性,不然相同的代码可能却无法正确运行。
JpGraph为什么会出现中文乱码
在JpGraph中默认是要把字符串转成utf8的,但是如果你的文件本身就是utf8的,并且要用中文字体,它还会转一遍,结果多转了一次,就会出现乱码。如图所示
解决中文乱码
取前篇的代码片断如下
把它改为
使用php函数据中文由UTF-8转为GB2312,记住由于iconv本身的一个bug,iconv在转换字符"—"到gb2312时会出错,所以在需要转成的编码后加上 "//IGNORE" 。
FF_SIMSUN表示中文简体,对应的字体文件是simsun.ttc,虽然FF_CHINESE和FF_BIG5也表示中文但是它们对应的字体文件是不同的,所以不要弄错。
下面是正确转换后生成的图
下面是本例调试的完整代码
当然了,我这里只介绍了一种方法,还有一种就是修改源码,但不推荐。因为我觉得改动源码可能会给其它地方带来意想不到的麻烦。
使用JpGraph,要知道其版本、运行服务器以及操作系统的息息,不能张冠李戴,否则麻烦多多。
好了,至此JpGraph使用介绍也就这么多了。
微信平台开发的推广支持应用里,为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,借此可以通过统计不同场景扫描的二维码的结果来获取商业信息。
为了更形象地展示统计结果,可以使用php作图,不过这需要掌握复杂抽象的画图函数,这里推荐使用php的JpGraph图表类库,它使得作图变成了一件非常简单的事情,你只需从数据库中取出相关数据,定义标题,图表类型,然后的事情就交给JpGraph,只需掌握为数不多的JpGraph内置函数(可以参照JpGraph附带例子学习),就可以画出非常炫目的图表!
因为我最近也在做phpcmw微信插件用户信息统计这块,所以对JpGraph作了一番研究应用。为避免初学者走我走过的弯路,我把调试记录整 理出来,分享给大家。
通过本文你至少可以掌握以下技巧:
1、能够使用JpGraph画出各式各样的图表
2、解决中文乱码
一、开启GD库
Jpgraph需要GD库的支持,所以在调式JpGraph之前,确保GD库已开启,这很重要,不然后面的工作就没办法展开了。GD库在PHP5中是被默认安装的,我们只需开启GD库就可以了。
打开php.ini文件,找到“;extension=php_gd2.dll”选项,将其前的分号“;”去掉,如图所示
然后保存修改后的文件并重新启动apache服务器。可以通过phpinfo()函数来获取GD2函数库的安装信息,验证GD库是否安装成功。
二、使用方法
在使用JpGraph时,最好弄明白你使用的是哪一个版本,千万不要弄错,不然就会张冠李戴,让你调得头晕目眩的。也不要从网上找一些片断代码来调试,除非它是完整的,不然也会让你吃不了兜着走的了。唠叼就到这里了,下面开始调试。
运行环境
操作系统 W7
代码运行环境 apache+php5.3
JpGraph版本 jpgraph-3.5.0b1(点击这里下载或者到官网http://jpgraph.net/download/下载)
解压下载的jpgraph-3.5.0b1压缩包,会看到一些目录:
src:图表生成所依赖的代码包,其子目录Examples里有许多的实例。
src\Examples:里面包函许多实例,使用它们可以制作各种各样的图表
docs :jpgraph的开发文档,但全是英文的.。
docs\chunkhtml:里面有许多案例及附有图表,通过它我们可以参考一下我们所需要的图表。
在网站根目录建一个文件夹test,然后把把docs和src文件夹拷贝到前面所创建的目录test里,重命名src为jpgraph,这里因为Examples里面的实例文件加载的路径都是“require_once ('jpgraph/jpgraph.php');”
实例
把jpgraph\Examples\accbarex1.php拷贝到test目录(和jpgraph同一目录),然后打开打开http://localhost/test/accbarex1.php,我们就会看到生成的图
哗,这是我们使用PHP作图很难实现的!
来看一下它的源码吧:
01 | //加载生成图表对应的文件 |
02 | require_once ( 'jpgraph/jpgraph.php' ); |
03 | require_once ( 'jpgraph/jpgraph_bar.php' ); |
04 |
05 | //创建图表的数据,可以自定义 |
06 | $data1y = array (-8,8,9,3,5,6); |
07 | $data2y = array (18,2,1,7,5,4); |
08 |
09 | // 图表的长宽 |
10 | $graph = new Graph(500,400); |
11 | $graph ->SetScale( "textlin" ); |
12 | $graph ->SetShadow(); |
13 |
14 | //图表的外边距 |
15 | $graph ->img->SetMargin(40,30,20,40); |
16 | // Create the bar plots |
17 | $b1plot = new BarPlot( $data1y ); |
18 | $b1plot ->SetFillColor( "orange" ); |
19 | $b1plot ->value->Show(); |
20 | $b2plot = new BarPlot( $data2y ); |
21 | $b2plot ->SetFillColor( "blue" ); |
22 | $b2plot ->value->Show(); |
23 | // Create the grouped bar plot |
24 | $gbplot = new AccBarPlot( array ( $b1plot , $b2plot )); |
25 | // ...and add it to the graPH |
26 | $graph ->Add( $gbplot ); |
27 |
28 | //设置图表的标题字体、大小 |
29 | $graph ->title->Set( "Accumulated bar plots" ); |
30 | $graph ->xaxis->title->Set( "X-title" ); |
31 | $graph ->yaxis->title->Set( "Y-title" ); |
32 |
33 | //和上面标题对应,设置标题的字体和大小 |
34 | $graph ->title->SetFont(FF_FONT1,FS_BOLD); |
35 | $graph ->yaxis->title->SetFont(FF_FONT1,FS_BOLD); |
36 | $graph ->xaxis->title->SetFont(FF_FONT1,FS_BOLD); |
37 |
38 | //生成本地图表,黙认留空,生成在当前目录,可以Stroke(“路径/文件名.png”)这样指定路径 |
39 | $graph ->Stroke(); |
小结:调试JpGraph,需要注意其运行环境、版本、操作系统以及代码的完整性,不然相同的代码可能却无法正确运行。
JpGraph使用详解之中文乱码解决方法
在前面的JpGraph使用详解这篇文章,已经对JpGraph的使用方法作了详细的交代,前面说好的,接下来解决中文乱码。JpGraph为什么会出现中文乱码
在JpGraph中默认是要把字符串转成utf8的,但是如果你的文件本身就是utf8的,并且要用中文字体,它还会转一遍,结果多转了一次,就会出现乱码。如图所示
解决中文乱码
取前篇的代码片断如下
1 | //设置图表的标题字体、大小 |
2 | $graph ->title->Set( "Accumulated bar plots" ); |
3 | $graph ->xaxis->title->Set( "X-title" ); |
4 | $graph ->yaxis->title->Set( "Y-title" ); |
5 |
6 | //和上面标题对应,设置标题的字体和大小 |
7 | $graph ->title->SetFont(FF_FONT1,FS_BOLD); |
8 | $graph ->yaxis->title->SetFont(FF_FONT1,FS_BOLD); |
9 | $graph ->xaxis->title->SetFont(FF_FONT1,FS_BOLD); |
1 | //设置图表的标题字体、大小 |
2 | $graph ->title->Set(iconv( "UTF-8" , "GB2312//IGNORE" , "网志博客信息统计表" )); |
3 | $graph ->xaxis->title->Set(iconv( "UTF-8" , "GB2312//IGNORE" , "X-标题" )); |
4 | $graph ->yaxis->title->Set(iconv( "UTF-8" , "GB2312//IGNORE" , "Y-标题" )); |
5 |
6 | //和上面标题对应,设置标题的字体和大小 |
7 | $graph ->title->SetFont(FF_SIMSUN,FS_BOLD); |
8 | $graph ->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD); |
9 | $graph ->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD); |
FF_SIMSUN表示中文简体,对应的字体文件是simsun.ttc,虽然FF_CHINESE和FF_BIG5也表示中文但是它们对应的字体文件是不同的,所以不要弄错。
下面是正确转换后生成的图
下面是本例调试的完整代码
01 | require_once ( 'jpgraph/jpgraph.php' ); |
02 | require_once ( 'jpgraph/jpgraph_bar.php' ); |
03 |
04 | $data1y = array (0,8,9,3,5,6); |
05 | $data2y = array (18,2,1,7,5,4); |
06 |
07 | // Create the graph. These two calls are always required |
08 | $graph = new Graph(500,400); |
09 | $graph ->SetScale( "textlin" ); |
10 |
11 | $graph ->SetShadow(); |
12 | $graph ->img->SetMargin(40,30,20,40); //设置图形的边距 |
13 |
14 | // Create the bar plots |
15 | $b1plot = new BarPlot( $data1y ); |
16 | $b1plot ->SetFillColor( "orange" ); |
17 | $b1plot ->value->Show(); |
18 | $b2plot = new BarPlot( $data2y ); |
19 | $b2plot ->SetFillColor( "blue" ); |
20 | $b2plot ->value->Show(); |
21 |
22 | // Create the grouped bar plot |
23 | $gbplot = new AccBarPlot( array ( $b1plot , $b2plot )); |
24 |
25 | // ...and add it to the graPH |
26 | $graph ->Add( $gbplot ); |
27 | //设置标题字体样式 |
28 | $graph ->title->Set(iconv( "UTF-8" , "GB2312//IGNORE" , "网志博客信息统计表" )); |
29 | $graph ->xaxis->title->Set(iconv( "UTF-8" , "GB2312//IGNORE" , "X-标题" )); |
30 | $graph ->yaxis->title->Set(iconv( "UTF-8" , "GB2312//IGNORE" , "Y-标题" )); |
31 |
32 | $graph ->title->SetFont(FF_SIMSUN,FS_BOLD); |
33 | $graph ->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD); |
34 | $graph ->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD); |
35 |
36 | $graph ->Stroke(); |
使用JpGraph,要知道其版本、运行服务器以及操作系统的息息,不能张冠李戴,否则麻烦多多。
好了,至此JpGraph使用介绍也就这么多了。
相关文章推荐
- PHP中发送邮件的几种方法总结
- ***php解析html类库simple_html_dom
- 关于editplus语法高亮和自动补全
- php使用post动态选择头像和js事件动态改变头像
- LAMP php5.4编译
- php通过判断来源主机头进行防盗链
- php模拟数据库常用操作效果
- php变量-单引号不编译,双引号编译
- An Isolated DAC Using PWM Output
- php实例-set和get方法
- 阿里云 使用SFTP方式传输文件
- php这是一个随机打印输出字符串的例子
- php实现ocr文字识别
- PHP循环遍历倒金字塔
- PHP字符串中的变量解析(+教你如何在PHP字符串中加入变量)
- navicat导出到phpmyadmin 注意事项
- php预定义$_SERVER实例,所有$_SERVER开头的都是预定义服务变量。
- TP 页面跳转success 和 error
- php 上传文件 $_FILES['']['type']的值
- php 上传文件 $_FILES['']['type']的值