求一个饼状图或柱状图php生成类或例子

时间:2006/7/19 6:10:04

作者:佚名

人气:268

PHP代码:--------------------------------------------------------------------------------

/*-------------------------------------------------------------------------*/

//

// Module Name: 一个3D的饼图类

//

// Author:Avenger(avenger@php.net) Last Modify: 2002-10-30 11:19

// Copyright (c) 2002 by Avenger

/*-------------------------------------------------------------------------*/

//公用函数部分

//把角度转换为弧度

function deg2Arc($degrees) {

return($degrees * (pi()/180.0));

}

//RGB

function getRGB($color){

$R=($color>>16) & 0xff;

$G=($color>>8) & 0xff;

$B=($color) & 0xff;

return (array($R,$G,$B));

}

// 取得在椭圆心为(0,0)的椭圆上 x,y点的值

function pie_point($deg,$va,$vb){

$x= cos(deg2Arc($deg)) * $va;

$y= sin(deg2Arc($deg)) * $vb;

return (array($x, $y));

}

//3D饼图类

class Pie3d{

var $a; //椭圆长半轴

var $b; //椭圆短半轴

var $DataArray; //每个扇形的数据

var $ColorArray; //每个扇形的颜色 要求按照十六进制书写但前面不加0x

var $Fize; //字体大小

//为边缘及阴影为黑色

function Pie3d($pa=60,$pb=30,$sData="100,200,300,400,500", $sColor="ee00ff,dd0000,cccccc,ccff00,00ccff",$fontsize=1) {

$this->a=$pa;

$this->b=$pb;

$this->DataArray=split(",",$sData);

$this->ColorArray=split(",",$sColor);

$this->Fsize=$fontsize;

}

function setA($v){

$this->a=$v;

}

function getA(){

return $this->a;

}

function setB($v){

$this->b=$v;

}

function getB(){

return $this->b;

}

function setDataArray($v){

$this->DataArray=split(",",$v);

}

function getDataArray($v){

return $this->DataArray;

}

function setColorArray($v){

$this->ColorArray=split(",",$v);

}

function getColorArray(){

return $this->ColorArray;

}

function DrawPie(){

$fsize=$this->Fsize;

$image=imagecreate($this->a*2+40,$this->b*2+40);

$PieCenterX=$this->a+10;

$PieCenterY=$this->b+10;

$DoubleA=$this->a*2;

$DoubleB=$this->b*2;

list($R,$G,$B)=getRGB(0);

$colorBorder=imagecolorallocate($image,$R,$G,$B);

$DataNumber=count($this->DataArray);

//$DataTotal

for($i=0;$iDataArray[$i]; //算出数据和

//填充背景

imagefill($image, 0, 0, imagecolorallocate($image, 255, 255, 255));

/*

** 画每一个扇形

*/

$Degrees = 0;

for ($i = 0; $i < $DataNumber; $i++) {

$StartDegrees = round($Degrees);

$Degrees += (($this->DataArray[$i]/$DataTotal)*360);

$EndDegrees = round($Degrees);

$percent = number_format($this->DataArray[$i]/$DataTotal*100, 1);

list($R,$G,$B)=getRGB(hexdec($this->ColorArray[$i]));

$CurrentColor=imagecolorallocate($image,$R,$G,$B);

if ($R>60 and $R<256) $R=$R-60;

if ($G>60 and $G<256) $G=$G-60;

if ($B>60 and $B<256) $B=$B-60;

$CurrentDarkColor=imagecolorallocate($image,$R,$G,$B);

//画扇形弧

imagearc($image,$PieCenterX,$PieCenterY,$DoubleA,$DoubleB,$StartDegrees,$EndDegrees,$CurrentColor);

//画直线

list($ArcX, $ArcY) = pie_point($StartDegrees , $this->a , $this->b);

imageline($image,$PieCenterX,$PieCenterY,floor($PieCenterX + $ArcX),floor($PieCenterY + $ArcY),$CurrentColor);

//画直线

list($ArcX, $ArcY) = pie_point($EndDegrees,$this->a , $this->b);

imageline($image,$PieCenterX,$PieCenterY,ceil($PieCenterX + $ArcX),ceil($PieCenterY + $ArcY),$CurrentColor);

//填充扇形

$MidPoint = round((($EndDegrees - $StartDegrees)/2) + $StartDegrees);

list($ArcX, $ArcY) = Pie_point($MidPoint, $this->a*3/4 , $this->b*3/4);

imagefilltoborder($image,floor($PieCenterX + $ArcX),floor($PieCenterY + $ArcY),$CurrentColor,$CurrentColor);

imagestring($image,$fsize,floor($PieCenterX + $ArcX-5),floor($PieCenterY + $ArcY-5),$percent."%",$colorBorder);

//画阴影

if ($StartDegrees>=0 and $StartDegrees<=180){

if($EndDegrees<=180){

for($k = 1; $k < 15; $k++)

imagearc($image,$PieCenterX, $PieCenterY+$k,$DoubleA, $DoubleB, $StartDegrees, $EndDegrees, $CurrentDarkColor);

}else{

for($k = 1; $k < 15; $k++)

imagearc($image,$PieCenterX, $PieCenterY+$k,$DoubleA, $DoubleB, $StartDegrees, 180, $CurrentDarkColor);

}

}

}

//输出生成的图片

imagepng($image,'consture.png');

imagedestroy($image);

}//End drawPie()

}//End class

$pie = new Pie3d;

$pie->Pie3d($pa=300,$pb=150,$sData="100,200,300,400,500", $sColor="ee00ff,dd0000,cccccc,ccff00,ddddaa",$fontsize=5);

$pie->DrawPie();

echo '';

?>

php生成饼状图 柱形图,求一个饼状图或柱状图php生成类或例子相关推荐

  1. ai形状生成工具机器人_这是一个不存在的人的人工智能生成的艺术品

    ai形状生成工具机器人 This, that you see right here, is an artwork I produced using AI. First creating a perso ...

  2. 半波对称振子方向图_求一个半波对称振子天线的CST仿真

    要求 1)中心频率为15 MHz (d,l2,lamda) 2)进行天线方向图仿真 3)当天线长度变化时,分析方向图图的变化. 跪求! 别跪着站起来.按我的个性跪着的一概不理--.是不是贪玩儿没做毕设 ...

  3. c语言多叉树运用存储源代码,C语言的家谱图想求一个运用结构链表的源程序我有多叉树版的源程 爱问知识人...

    #include #include #include #include #define OK 1 #define ERROR -1 #define STACK_INIT_SIZE 100 #defin ...

  4. matlab求kcf算法响应图_matlab求kcf算法响应图_剖析KCF

    来源自我的博客 前言 核相关滤波算法是单目标跟踪领域一个举足轻重的算法,而kernelized correlation filters(KCF)是其原始形态,下面我以一个小白的角度慢慢揭开其神秘面纱. ...

  5. 【论文解读】Graph Normalization (GN):为图神经网络学习一个有效的图归一化

    作者|平安产险视觉计算组 编辑丨极市平台 本文为极市开发者投稿,转载请获授权. 极市专栏 论文推荐:在图神经网络里面,应该如何选择更好的归一化技术?本文将介绍一种为图神经网络学习有效的图归一化的方式. ...

  6. Graph Normalization (GN):为图神经网络学习一个有效的图归一化

    摘要 作者在不同任务中尝试了节点式归一化(Node-wise),邻接式归一化(Adjance-wise),图式归一化(Graph-wise)和批处理归一化(Batch-wise)作为归一化计算方式,来 ...

  7. HQChart使用教程1- 如何快速创建一个K线图页面

    快速创建一个K线图页面 HQChart介绍 demo页面代码 Option的配置项说明 Type Symbol IsAutoUpdate IsShowRightMenu IsShowCorssCurs ...

  8. 利用微软平台生成报表,线性图,柱形图

    说来惭愧,以前的工作中一直借助第三方dll进行报表制作,比如线性图,柱形图. 因为现在工作的这家公司不允许随便引入第三方dll,听同事说起可以建rdl类型文件进行引入到winform窗体中,窗体上使用 ...

  9. 求一个连通图的割点(去掉一个点后图不再连通)

    题目:求一个连通图的割点,割点的定义是,如果除去此节点和与其相关的边,图不再连通,描述算法. 分析: 1. 最简单也是最直接的算法是,删除一个点然后判断连通性,如果删除此点,图不再连通,则此点是割点, ...

最新文章

  1. Color the ball(HDU1556)树状数组
  2. MVC 4.0 Razor模板引擎 @Html.RenderPartial 与 @Html.RenderAction 区别
  3. AI+5G:2019.03.31第11届中国(深圳)IT领袖峰会【IT新未来: 5G与人工智能】内容概要
  4. VTK:可视化之ReverseAccess
  5. IOS15仿地铁我的页面
  6. JAVA入门级教学之(方法-1)
  7. data矩阵poj 2778 DNA Sequence
  8. 设计模式笔记十五:命令模式
  9. 华三 h3c 单臂路由配置
  10. mybatis-plus主键生成策略
  11. access查询设计sol视图_access查询类型分哪几种?
  12. [渝粤教育] 西南科技大学 液压与气压传动 在线考试复习资料
  13. python爬取微信公众号_python爬取微信公众号
  14. 如何才能达到阿里 P7 水平 ?
  15. 如何提高代码质量,或者说高质量代码的特征是什么
  16. android 微信摇一摇代码,Android实现微信摇一摇功能
  17. SEO中巧用个人博客优化关键字
  18. 移动端和pc端微信加入群聊
  19. pyecharts导演人物关系图
  20. 黄复贵:从北京理工到今日头条

热门文章

  1. linux+系统优化基础,linux系统优化基础
  2. 【英语学习】【Daily English】U08 Dating L01 She is the one for me.
  3. 深入理解 main 方法
  4. pv,svogi,vxgi,各自的优缺点在哪,ue4还有可能把svogi加进去吗
  5. Python核心编程-第2章-网络编程(1)
  6. Docker和Kubernetes应用程序打包:Metaparticle、Pulumi与Ballerina比较
  7. Spring Cloud云架构 - commonservice-sso服务搭建(一)
  8. 韩国巨型机器人曝光,走一步地动山摇
  9. 07-OSPF区域类型--NSSA区域/完全NSSA区域
  10. 关于UNIX功能测试宏