php生成扇形比例图实例


Posted in PHP onNovember 06, 2013

我们在很多网站会看到一些图形的百分比显示图,像三个地区所占地多少或者是成绩等,给大家介绍一款用php生成的扇形比例百分比显示程序代码,不过使用它首先得有phpGD库支持。

<?php
//填充图表的参数
$ChartDiameter = 60; //图表直径
$ChartData = array(30,70);//用于生成图表的数据,可通过数据库来取得来确定也可以多个不过和颜色数组对应
//把角度转换为弧度
function radians($degrees){return($degrees*(pi()/180.0));}
//取得在圆心为(0,0)圆上 x,y点的值
function circle_point($degrees,$diameter){$x=cos(radians($degrees))*($diameter/2);$y=sin(radians($degrees))*($diameter/2);return (array($x,$y));}
//确定图形的大小
$ChartWidth = $ChartDiameter + 20;
$ChartHeight = $ChartDiameter + 20;
//确定统计的总数
$ChartTotal = “”;
for($index = 0;$index < count($ChartData);$index++){
$ChartTotal += $ChartData[$index];
}
$ChartCenterX = $ChartDiameter/2 + 10;
$ChartCenterY = $ChartDiameter/2 + 10;
//生成空白图形
$image = imagecreate($ChartWidth, $ChartHeight);
//分配颜色
$colorBody = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$colorBorder = imagecolorallocate($image, 0×00, 0×00, 0×00);
$colorText = imagecolorallocate($image, 0×00, 0×00, 0×00);
$colorSlice[] = imagecolorallocate($image, 0xFF, 0×00, 0×00);//这里是和你上面写的数组对应的颜色
$colorSlice[] = imagecolorallocate($image, 0×00, 0xFF, 0×00);
//填充背境
imagefill($image, 0, 0, $colorBody);
//画每一个扇形
$Degrees = 0;
for($index = 0; $index < count($ChartData); $index++){
$StartDegrees = round($Degrees);
$Degrees += (($ChartData[$index]/$ChartTotal)*360);
$EndDegrees = round($Degrees);
$CurrentColor = $colorSlice[$index%(count($colorSlice))];
//画图F
imagearc($image,$ChartCenterX,$ChartCenterY,$ChartDiameter,$ChartDiameter,$StartDegrees,$EndDegrees, $CurrentColor);
//画直线
list($ArcX, $ArcY) = circle_point($StartDegrees, $ChartDiameter);
imageline($image,$ChartCenterX,$ChartCenterY,floor($ChartCenterX + $ArcX),
floor($ChartCenterY + $ArcY),$CurrentColor);
//画直线
list($ArcX, $ArcY) = circle_point($EndDegrees, $ChartDiameter);
imageline($image,$ChartCenterX,$ChartCenterY,ceil($ChartCenterX + $ArcX),
ceil($ChartCenterY + $ArcY),$CurrentColor);
//填充扇形
$MidPoint = round((($EndDegrees ? $StartDegrees)/2) + $StartDegrees);
list($ArcX, $ArcY) = circle_point($MidPoint, $ChartDiameter/2);
imagefilltoborder($image,floor($ChartCenterX + $ArcX),floor($ChartCenterY + $ArcY),
$CurrentColor,$CurrentColor);
}
//到此脚本 已经生了一幅图像的,现在需要的是把它发到浏览器上,重要的一点是要将标头发给浏览器,让它知道是一个GIF文件。不然的话你只能看到一堆奇怪的乱码
header(“Content-type: image/png”);
imagegif($image);
?>
 

PHP 相关文章推荐
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
Dec 06 PHP
PHP中for与foreach的区别分析
Mar 09 PHP
div li的多行多列 无刷新分页示例代码
Oct 16 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
PHP一个简单的无需刷新爬虫
Jan 05 PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 PHP
PHP unset函数原理及使用方法解析
Aug 14 PHP
php多用户读写文件冲突的解决办法
Nov 06 #PHP
php生成图形(Libchart)实例
Nov 06 #PHP
php ZipArchive压缩函数详解实例
Nov 06 #PHP
php根据分类合并数组的方法实例详解
Nov 06 #PHP
php foreach循环中使用引用的问题
Nov 06 #PHP
php用正则表达式匹配中文实例详解
Nov 06 #PHP
php引用传值实例详解学习
Nov 06 #PHP
You might like
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
PHP 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
javascript高亮效果的二种实现方法
2008/09/14 Javascript
Prototype源码浅析 Enumerable部分之each方法
2012/01/16 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
利用jQuery实现简单的拖曳效果实例代码
2017/10/20 jQuery
详解node nvm进行node多版本管理
2017/10/21 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
Django Form常用功能及代码示例
2020/10/13 Python
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
生物化工专业个人自荐信
2013/09/26 职场文书
离婚协议书怎么写
2015/01/26 职场文书
教学反思怎么写
2016/02/24 职场文书
Java 异步任务计算FutureTask
2022/04/28 Java/Android