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-12 03:20:06

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

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

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

[转]html5 Canvas画图教程(1)—画图的基本常识

今天看到一个讲Canvas的教程,很通俗移动,所以转载了下. 虽然大家都称Canvas为html5的新标签,看起来好像Canvas属于html语言的新知识,但其实Canvas画图是通过javascript来做的.所以,如果你想学习Canvas画图,你必须要有Javascript基础. 另外,画图嘛,总有一些图像方面的术语和知识点,所以如果你有过做图或美工经验,学习Canvas会更容易. Canvas,意为画布也.而Html5中的Canvas也真的跟现实生活中的画布非常相似.所以,把他看成一块实实

c# GDI画图 双缓存画图分析

双缓冲绘图分析  1.Windows 绘图原理  我们在 Windows 环境下看到各种元素,如菜单.按钮.窗口.图像,从根本上说,都是“画”出来的.这时的屏幕,就相当于一块黑板,而 Windows 下的各种 GDI 要素,如画笔.画刷等,就相当于彩色粉笔了.我们在黑板上手工画图时,是一笔一划的,电脑亦然.只不过电脑的速度比手工快的太多,所以在我们看起来好像所有的图形文字都是同时出现的. 2.普通绘图方式的局限  上述绘图方式我们暂且称之为普通绘图方式吧.虽然这种方式能满足相当一部分的绘图需要,

IOS SWIFT基本画图教程

OS SWIFT基本画图教程 其实这是以前做过的一个例子,方便自己参考的代码!希望对大家也有点参考. 首先,建立一个Swift类,继承UIView这个类,然后重写 func drawRect(rect: CGRect) 其次,获取画笔的上下文 var context:CGContextRef =  UIGraphicsGetCurrentContext();//获取画笔上下文 CGContextSetAllowsAntialiasing(context, true) //抗锯齿设置 下面我们就可

Matlab画图-非常具体,非常全面

Matlab画图 强大的画图功能是Matlab的特点之中的一个,Matlab提供了一系列的画图函数,用户不须要过多的考虑画图的细节,仅仅须要给出一些基本參数就能得到所需图形,这类函数称为高层画图函数.此外,Matlab还提供了直接对图形句柄进行操作的低层画图操作.这类操作将图形的每一个图形元素(如坐标轴.曲线.文字等)看做一个独立的对象,系统给每一个对象分配一个句柄,能够通过句柄对该图形元素进行操作,而不影响其它部分. 本章介绍绘制二维和三维图形的高层画图函数以及其它图形控制函数的用法,在此基础

R基本画图

参考内容:闻博,R语言的绘图功能及应用案例  https://wenku.baidu.com/view/80f22fa50029bd64783e2c22.html R画图是以函数操作为基本的画图模式. 画图函数可分为两种: 1.高级绘图函数:创建一个新的图形. 2.低级绘图函数:在现有图形上添加元素. 1.高级绘图函数: plot(x,y):以x元素为x轴,y元素为y轴作图,有多种type可供选择.p,散点图:l,线图:h,直方图:s,梯形图.等等. pie(x,label=names(x),.

R语言画图

R语言画图 一.画图的简单命令 R绘图 gemo(graphics)demo(persp)x11() windows()打开绘图窗口?device 查看绘图列表dev.list() 显示打开装置的列表> dev.set() 改变当前装置dev.off() 关闭画图装置> split.screen(c(1, 2)) 分割当前绘图装置earse.screen()删除最后绘制的图形layout() 把当前窗口分割为多个部分,图形连续的显示layout.show() 查看分割后的byrow=TRUE

python:matplotlib画图入门

一.基础绘图库:matplotlib.pyplot 1.简单画图:二次曲线 1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 if __name__ == '__main__': 5 x1 = np.linspace(-3, 3, 15) 6 y1 = [d**2 for d in x1] 7 # 画图 8 plt.plot(x1, y1) 9 x2 = [] 10 y2 = [] 11 for i, data in enume

gnuplot画图中文标注相关问题

gnuplot是一个基于命令行的开源跨平台画图工具包,画图功能非常丰富.不过最近在考虑如何在gnuplot图中添加中文标注的过程中遇到了一些问题,记录如下. gnuplot支持多种的输出格式,比如png.svg.eps.pdf.因为论文需要,一般我们要求得到的矢量图的格式,采用eps或者pdf作为输出样式的情况居多. 当直接绘制输出eps格式时,输出的eps文件会自动裁边,将多余的空白去掉(相当于自带gsview里面的automatically calculating bounding box操