PHP 绘图——使用jpgraph绘图



1.要支持中文需要用到simhei.ttf和simsun.ttc这两个字体,在使用中文的时候需要使用SetFont(FF_SIMSUN,FS_BOLD)设置字体。

将需要的字体放入到项目目录下的src\fonts\目录里

在jpgraph.php中有以下这样一段代码是设置字体文件路径的

//

// Setup path for western/latin TTF fonts

//

if (!defined(‘TTF_DIR‘)) {

if (strstr( PHP_OS, ‘WIN‘) ) {

$sroot = getenv(‘SystemRoot‘);

if( empty($sroot) ) {

$t = new ErrMsgText();

$msg = $t->Get(12,$file,$lineno);

die($msg);

}

else {

define(‘TTF_DIR‘, $sroot.‘/fonts/‘);

}

} else {

define(‘TTF_DIR‘,‘/usr/share/fonts/truetype/‘);

}

}

2.需要注意的是:要想适用jpgraph,你的PHP必须开启了GD2扩展。

如果是在window下首先需要修改文件的路径

修改jpgraph_ttf.inc.php文件

$jpgraph_font_dir = dirname(__FILE__).‘\\fonts\\‘;//修改字体的路径从原来的/fonts/ 改为 \\fonts\\

如果没修改在windows下会报下面的错误

解决中文问题:

如果你的文件编码为utf-8,修改方法如下

方法一:

找到

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);

}

修改为

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;

}

方法二:在程序中修改

$title="流量图";

$title = iconv("UTF-8", "gb2312", $title);

$graph->title->Set($title);

注:

jpgraph默认显示汉字时是把汉字编码认为gb2312,转化为utf-8以后再显示。

这样的话,如果你的文件编码是gb2312,SetFont方法的第一个参数为FF_SIMSUN即可。

如果你是utf-8编码你还需要先把汉字编码转化为gb2312,这样你的汉字才可以正常显示。

代码如下:

<?php

/**

* 使用jpgraph生成3D饼图

*

*/

include ‘src/jpgraph.php‘;

include ‘src/jpgraph_pie.php‘;

include ‘src/jpgraph_pie3d.php‘;//引用3D饼图pieplot3D对象所在的类文件

$result = array(5,8,11,1,1,1);

$vote_content = array("张三","丽丽","lili","张三","丽丽","lili");

$title = ‘标题‘;

$graph = new PieGraph(500,245);//创建图像

$graph->SetShadow();//创建图像阴影

$graph->tabtitle->SetFont(FF_SIMSUN,FS_BOLD,14);//设置标题字体

$graph->tabtitle->Set($title);//输出标题

$graph->title->SetColor("darkblue");//定义标题颜色

$p1 = new PiePlot3D($result);//创建图像

//$p1->SetTheme("water");//控制图像的颜色

//$p1->SetCenter(0.4);//设置图像位置

//$p1->SetSize(0.4);//设置图像的大小

//$p1->SetHeight(20);//设置饼图的高度

//$p1->SetAngle(45);//设置图像的倾斜角度

//$p1->Explode(array(5,40,10,30,20));//控制饼图的分割

//$p1->value->SetFont(FF_SIMSUN,FS_BOLD,20);//设置字体

/* 注释文字 */

$p1->SetLegends($vote_content);

$graph->legend->SetFont(FF_SIMSUN,FS_BOLD);//设置注释文字字体

$graph->legend->Pos(0.05,0.3,"right","center");//控制注释文字的位置

$graph->legend->SetShadow();//边界

$graph->legend->SetLayout(LEGEND_VERT);//设置图例样式和位置

$graph->Add($p1);//添加数据

$graph->Stroke();//生成图像

时间: 2024-10-09 22:16:49

PHP 绘图——使用jpgraph绘图的相关文章

C#-gdi绘图,双缓冲绘图,Paint事件的触发---ShinePans

在使用gdi技术绘图时,有时会发现图形线条不够流畅,或者在改变窗体大小时会闪烁不断的现象.(Use DoubleBuffer to solve it!)                                                                                                                                                                              

cocos2d-x游戏引擎核心之四——绘图原理和绘图技巧

一.OpenGL基础 游戏引擎是对底层绘图接口的包装,Cocos2d-x 也一样,它是对不同平台下 OpenGL 的包装.OpenGL 全称为 Open Graphics Library,是一个开放的.跨平台的高性能图形接口.OpenGL ES 则是 OpenGL 在移动设备上的衍生版本,具备与 OpenGL 一致的结构,包含了常用的图形功能.Cocos2d-x 就是一个基于 OpenGL 的游戏引擎,因此它的绘图部分完全由 OpenGL 实现.OpenGL 是一个基于 C 语言的三维图形 AP

Matlab 三维绘图与统计绘图

一. 三维绘图 p = 0: pi/10: 20*pi; x = cos(p); y = sin(p); z = p; plot3(x,y,z) x = -2:.2:2; %有-2为起点,2为递增步长,2为终止点 y = -1:.2:1; [xx, yy] = meshgrid(x, y); %用于从数组x和y产生网格,两矩阵大小相同 zz = xx.*exp(-xx.^2 - yy.^2); [px,py] = gradient(zz,.2,.2); %求数值梯度函数的命令 quiver(x,

matlab的三维绘图和四维绘图

一.三维绘图1.曲线图plot3(X1,Y1,Z1,...):以默认线性属性绘制三维点集(X1,Y1,Z1)确定的曲线plot3(X1,Y1,Z1,LineSpec):以参数LineSpec确定的线性属性绘制三维点集plot3(X1,Y1,Z1,'PropertyName',PropertyValue,...):根据指定的属性绘制三维曲线theta = 0:0.01*pi:2*pi;x = sin(theta);y = cos(theta);z = cos(4*theta);plot3(x,y,

[ html 绘图 时钟 ] canvas绘图时钟实例演示之三

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

[ html 绘图 时钟 ] canvas绘图时钟实例演示

<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title> <meta name='description' content='this is my page'> <meta name='keywords' content='keyword1,keyword2,keyword3'> <meta http-equiv="

[ html 绘图 translate ] canvas绘图属性translate 设置画布中心点属性实例演示

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

用仿ActionScript的语法来编写html5——第五篇,Graphics绘图

canvas本身就是一个Graphics,可以直接进行绘图在actionscript里面,每个Sprite都有一个Graphics,Shape我先不考虑了,它更容易实现些,在Html5中,绘图都是绘在同一个canvas上面的,所以我们现在需要考虑两个问题,1,如何把每个Sprite里的Graphics在不同的时刻,画在同一个地方2,因为我们现在在不停的刷新页面,所以如果我们用Graphics绘图,那么它也需要不断的刷新 那我现在依然先假设,每一个Sprite储存的Graphics,只保存一些绘图

iOS之在内存中绘图

与直接在UIView控件上绘图不同,在内存中绘图时,需要开发者自己准备绘图环境,Quartz 2D提供了一个非常便捷的函数:UIGraphicsBeginImageContext(CGSize size),该函数用于准备绘图环境.当图形绘制完成后,可调用UIGraphicsEndImageContext()函数结束绘图和关闭绘图环境. 总结来说,在内存中绘图的步骤如下. 调用UIGraphicsBeginImageContext(CGSize size)函数准备绘图环境. 调用UIGraphic