用Jpgraph,只要了解它的一些内置函数,可以轻松得画出折线图、柱形图、饼状图等图表。

  首先要保证PHP打开了Gd2的扩展:

  打开PHP.ini,定位到extension=php_gd2.dll,把前面的分号删掉。

  然后下载Jpgraph,http://www.aditus.nu/jpgraph/,解压到一个文件夹中。如 E:\Software\web\www\jpgraph。

  打开PHP.ini,修改include_path参数,增加Jpgraph的路径,如include_path=",;E:\Software\web\www\jpgraph",重启Apache服务。

  这样环境就配好了。

  下面附上一段例程

<?php
  require_once '../jpgraph/src/jpgraph.php';
  require_once '../jpgraph/src/jpgraph_line.php';
  require_once '../jpgraph/src/jpgraph_bar.php';
  // y 轴数据,以数组形式赋值
  $ydata = array(12,4,9,15,11,10,9,7,15,7);   // 创建 Graph 类,350 为宽度,250 长度,auto:表示生成的缓存文件名是该文件的文件名+扩展名(.jpg .png .gif ……)
  $graph = new Graph(350,250,"auto");   // 设置刻度类型,x轴刻度可作为文本标注的直线刻度,y轴为直线刻度
  $graph->SetScale("textlin");   // 创建坐标类,将y轴数据注入
  $lineplot=new LinePlot($ydata);   // y 轴连线设定为蓝色
  $lineplot->SetColor("blue");   // 坐标类注入图标类
  $graph->Add($lineplot);   // 显示图
  $graph->Stroke(); ?>

Jpgraph

结果如下图所示

2,中文乱码

pGraph是一个PHP的图形类库,可以方便地生成各种柱状图,饼图,折线图等等,而且还可以方便地加文字

。但是,中文的情况就稍微麻烦了一点。在JpGraph中默认是要把字符串转成utf8的,但是如果你的文件本身

就是utf8的,并且要用中文字体,它还会转一遍,结果多转了一次,就会出现乱码。

除了编码问题,还有就是字体问题。为了试验中文显示,专门拷了一个simsun.ttc过来是,在代码里用

FF_SIMSUN就可以正确显示中文,但是如果改用自己设置的FF_CHINESE,也就是uming.ttf,就又乱码了,而

且和simsun.ttf乱码时的不一样。 后来发现FF_CHINESE和FF_BIG5是一样,是繁体字体,所以和用FF_SIMSUN

的乱码还不一样。

解决以上问题的方法也就是传递正确的中文字符串给JpGraph,所以可以把字符串先转成gb2312的,这样

JpGraph就可以正确转换了。当然,这个方法比较麻烦,每次都需要,
还可以直接修改jpgraph_ttf.inc.php。我的JpGraph为3.0.7版本,大概在178到186行之间的代码改为如下:
 elseif( $aFF === FF_SIMSUN ) {
            // Do Chinese conversion
            /*if( $this->g2312 == null ) {
                include_once 'jpgraph_gb2312.php' ;
                $this->g2312 = new GB2312toUTF8();
            }
            return $this->g2312->gb2utf8($aTxt);*/
            return $aTxt;
        }
但是我还是不喜欢改动源码,可以用iconv("UTF-8","GB2312//IGNORE","简体中文 繁體中文 test")函数
先将要显示的字转换为GB2312。
 
右上角的那些中文显示有点难度,因为那个类没有SetFont方法,也就是说那东西是不能显示中文的。所以我

就改了基础类库 
修改了jpgraph_legend.inc.php文件里的。 
class Legend 类中有这样一句 
   private $font_family=FF_FONT1,$font_style=FS_NORMAL,$font_size=12; 
我把他改为 
private $font_family=FF_SIMSUN,$font_style=FS_NORMAL,$font_size=8; 
就OK了。

下面是一个简单列子:

<?php
include 'jpgraph/jpgraph.php';
include 'jpgraph/jpgraph_line.php'; $data = array(19 , 23 , 34 ,36, 50 , 60 , 65, 70 , 78); //模拟数据
$graph = new Graph($width = 400 , $height = 300); //创建新的Graph对象
$graph->SetScale("textlin"); //设置刻度模式
$graph->img->SetMargin(30 , 30 , 80 , 30) ; //设置图表边界 $graph->title->Set(iconv("UTF-8","GB2312//IGNORE","简体中文 繁體中文 test")) ; //设置图表标题
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); // 设置中文字体
$graph->title->SetFont(FF_CHINESE,FS_BOLD);
$lineplot = new LinePlot($data); //创建新的LinePlot对象
$lineplot->SetLegend(iconv("UTF-8","GB2312//IGNORE","数据1"));//设置图例文字
$graph->subtitle->SetFont(FF_SIMSUN);
$graph->subsubtitle->SetFont(FF_SIMSUN);
$lineplot->SetColor("red"); //设置曲线颜色
$graph->Add($lineplot); //在统计图上绘制曲线 $data2 = array(20 ,30 ,45 , 23 , 45 , 69 , 60 , 79 , 80);
$lineplot = new LinePlot($data2); //创建新的LinePlot对象
$lineplot->SetLegend(iconv("UTF-8","GB2312//IGNORE","数据2"));//设置图例文字
$lineplot->SetColor("blue"); //设置曲线颜色
$graph->Add($lineplot); //在统计图上绘制曲线
$graph->Stroke() ; //输出图像*/

解决中文乱码

结果如图所示

本文转自

PHP中Jpgraph类库的使用

PHPJpgraph中文乱码

php中Jpgraph的运用的更多相关文章

  1. php中JPGraph入门配置与应用

    什么是PHP JPGraph? 专门提供图表的类库.它使得作图变成了一件非常简单的事情.生成非美工人士生成的图表.二维码算法. 到官方网站下载. docportal 帮助手册 src 包含主要代码. ...

  2. php中jpgraph库的使用

    用Jpgraph,只要了解它的一些内置函数,可以轻松得画出折线图.柱形图.饼状图等图表. 首先要保证PHP打开了Gd2的扩展: 打开PHP.ini,定位到extension=php_gd2.dll,把 ...

  3. JGraph

    php中JPGraph入门配置与应用 什么是PHP JPGraph?专门提供图表的类库.它使得作图变成了一件非常简单的事情.生成非美工人士生成的图表.二维码算法. 到官方网站下载.docportal ...

  4. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  5. PHP中使用Jpgraph生成统计图

    Jpgraph是PHP图表类库,可以生成折线图.柱状图.大饼图等等统计图.如果你想使用PHP生成统计图来统计数据,使用它再方便不过啦. 如果说你要亲自使用GD库来写的话,那我只能膜拜大神啦(我不会哈哈 ...

  6. PHP知识库图谱汇总(完善中)

    基本语法不做汇总 经典算法: 冒泡算法.快速算法.二分查找 字符串处理: 字符串查找 字符串排序 字符串切割 字符串定位 字符串对比 字符串大小写转换 Session和Cookies: Session ...

  7. PHP图标类库 - JpGraph使用详解

    http://w3note.com/web/181.html 微信平台开发的推广支持应用里,为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口.使用该接口可以获得多个带不同场景值的二 ...

  8. 在iis中mantisbt配置过程

    最近需要安装个mantisbt,由于不想再安装个apache服务器,因此直接使用iis作为php解析服务器.同时为了方便管理安装包,将php安装包和扩展包能够独立存放在D:\Program Files ...

  9. 数据画图 jpgraph & chart.js

    今天想到要研究下“用图表的形式来呈现数据”这个主题.对比了下两种实现的方法: 方法一:通过php代码在服务器端生成图像,再将图像传回客户端.使用jpGraph类库. 方法二:通过js和html5技术, ...

随机推荐

  1. c中的基本运算

    一. 算术运算 C语言一共有34种运算符,包括了常见的加减乘除运算 1. 加法运算+ l 除开能做加法运算,还能表示正号:+5.+90 2. 减法运算- l 除开能做减法运算,还能表示符号:-10.- ...

  2. HTML5 结构性标签 行内语义性标签

    结构性标签: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  3. iOS之 APNs全新的APNs苹果15年WWDC大会上的干货

    记得14年在dl某大学校招上现场面试iOS时候被问到了APNs也就是苹果的推送问题,当时我表示一脸懵逼,因为当时还没有真正接触做过项目也就了解了个大概,总之当时回答的一塌糊涂!后来回去就在网上仔细查了 ...

  4. C++ virtual虚函数

    #include<iostream> using namespace std; class Base{ public: void m() { cout << "it' ...

  5. SSH加载顺序问题

    http://bbs.csdn.net/topics/390299835 个人总结 1.项目启动首先加载WEB.xml文件 wen.xml文件中有     <!-- tomcat默认生成的地方是 ...

  6. 使用sql server profilter跟踪sql

    最近在研究EF延迟加载和贪婪加载的用法时,想要查看Linq生成的sql.一开始通过VS-->调试-->窗口-->IntelliTrace事件,来查看生成的sql,并不是十分准确.然后 ...

  7. SSH新学

    流程:model-->dao-->service-->impService-->action 如果只是操作单个的一个表,比如user表,则都写到user的流程中 如果要操作俩个 ...

  8. 优化SQLServer——表和分区索引

    概念: 简单地说,分区是将大型的对象(如表)分成更小的且易于管理的小块.分区的基本单位是行,需要注意的是与分区视图不同的地方时,分区必须位于同一个数据库内. 分区的原因:            对于非 ...

  9. java自定义Annotation(载自百度文库)

    java中自定义annotation需要@interface关键字和用到几个内置annotation. 用到的注解有@Target,@Retention,@Documented,@Inherited  ...

  10. 使用 xtrabackup 进行MySQL数据库物理备份

    0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...