如何用PHP制作“饼图”函数?

 

######## <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

bimage.php3

########

/*

函数说明

$chartdata:数据,是数组元素

$chartfont:字号

$chartdiameter:决定饼的大小(要看你饿不饿了,呵呵)

$chartlabel:标题,也是数组元素

$colorslice:颜色数组,例如$tmp=array255,255,255);$colorslic=array($tmp);

$colorborder:边框颜色,数组

$colortext :文本颜色,数组

$colorbody:背景颜色,数组

$file:输出图片文件名*/

function bimage($chartdata,

$chartfont,

$chartdiameter ,

$chartlabel ,

$colorslice,

$colorbody ,

$colorborder,

$colortext ,

$file

)

{

$chartdiameter=150;

$chartfontheight=imagefontheight($chartfont);

$d1=10;$d2=20;$d3=30;$d4=40;$d5=50;

$chartdata=array($d1,$d2,$d3,$d4,$d5);

$chartlabel=array("D1","D2","D3","D4","D5");

$chartwidth=$chartdiameter+20;

$chartheight=$chartdiameter+20+(($chartfontheight+2)*count($chartdata));

header("content-type:image/gif");

$image=imagecreate($chartwidth,$chartheight);

$colorbody =imagecolorallocate ($image,$colorbody[0],$colorbody[1],$colorbody[2]);

$colortext =imagecolorallocate ($image,$colortext[0],$colortext[1],$colortext[2]);

$colorborder =imagecolorallocate ($image,$colorborder[0],$colorborder[1],$colorborder[2]);

for ($i=0;$i {

$t=imagecolorallocate($image,$colorslice[$i][0],$colorslice[$i][1],$colorslice[$i][2]);

$colorslice[$i]=$t;

}

for($i=0;$i {

$charttotal+=$chartdata[$i];

}

$chartcenterx=$chartdiameter/2+10;

$chartcentery=$chartdiameter/2+10;

$degrees=0;

for($i=0;$i {

$startdegrees=round($degrees);

$degrees+=(($chartdata[$i]/$charttotal)*360);

$enddegrees=round($degrees);

$currentcolor=$colorslice[$i%(count($colorslice))];

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

}

imagearc($image,

$chartcenterx,

$chartcentery,

$chartdiameter,

$chartdiameter,

0,360,

$colorborder);

imagefilltoborder ($image,

floor($chartcenterx +( $chartdiameter /2)+2),

$chartcentery ,

$colorborder,

$colorborder );

for ($i=0;$i {

$currentcolor=$colorslice[$i%(count($colorslice))];

$liney=$chartdiameter+20+($i*($chartfontheight+2));

imagerectangle ($image,

10,

$liney,

20+$chartfontheight,

$liney+$chartfontheight,

$colorbody);

imagefilltoborder($image,

12,

$liney+2,

$colorbody,

$currentcolor);

imagestring($image,

$chartfont,

40+$chartfontheight,

$liney,

"$chartlabel[$i]:$chartdata[$i]",

$colortext);

}

imagegif ($image,$file);

}

function radians($degrees)

{

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

}

function circle_point($degrees,$diameter)

{

$x=cos(radians($degrees))*($diameter/2);

$y=sin(radians($degrees))*($diameter/2);

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

}

?>

###########

这是一个调用的例子

###########

include("bfunc.php3");

$chartdiameter=250;

$chartfont=5;

$d1=10;$d2=20;$d3=30;$d4=40;$d5=50;

$chartdata=array($d1,$d2,$d3,$d4,$d5);

$chartlabel=array("D1","D2","D3","D4","D5");

$colorbody=array(0xff,0xff,0xff);

$colorborder=array(0x00,0x00,0x00);

$colortext=array(0xff,0xff,0xff);

$color1=array(0xff,0x00,0x00);

$color2=array(0x00,0xff,0x00);

$color3=array(0x00,0x00,0xff);

$color4=array(0xff,0xff,0x00);

$color5=array(0xff,0x00,0xff);

$colorslice=array($color1 ,$color2,$color3,$color4,$color5);

$file="tj.gif"

bimage($chartdata,

$chartfont,

$chartdiameter ,

$chartlabel ,

$colorslice,

$colorbody ,

$colorborder,

$colortext ,

$file )

?>

 

时间: 2024-07-31 20:33:57

如何用PHP制作“饼图”函数?的相关文章

手把手:如何用R制作动态图

如何用R制作动态的统计图呢?下面我们以"大数据文摘"国庆献礼的世界独立进程为例,手把手地教大家如何用R制作动态图. 安装制作GIF所需要的ImageMagic程序 从http://www.imagemagick.org/script/binary-releases.php网址下载相关的ImageMagic.exe.安装ImageMagic.exe.安装完成后启动Rstudio编写代码. 载入制作动画和地图的R程序包 library(animation) library(maps) 输入

画图-如何用MFC中OnDraw函数输出的文字是反向的?

问题描述 如何用MFC中OnDraw函数输出的文字是反向的? 如题,要用绘图程序画图,在OnDraw函数中,如何输出反向的文字? 解决方案 自己先把文字反向reverse了,再OnDraw来TextOut 解决方案二: 只能是先把你要输出的字符改为反向的,然后再输出,比如用strrev来吧字符串反向一下

用ASP制作饼图、柱状图等

饼图|柱状图|饼图|柱状图 我们工作中经常需要将数据转化成柱状图,饼图等,以方便直观的分析数据, 这里给大家介绍一个ASP中制作饼图.柱状图的组件:csDrawGraph,csdgt.zip,因为是组件,所以我们在使用之前需要用REGSVR32.EXE 注册一下,csDrawGraph,可以在ASP中创建饼图,柱状图以及线图,其支持的格式有GIF, PNG, JPG and BMP. 看看如下的柱状图,饼图如何生成的例子: chartdemo.asp  <%@ language=vbscript

如何用PowerPoint制作设计模板

  如何用PowerPoint制作设计模板          工具/原料 PowerPoint 2000(或以上版本) 已经准备好的图片素材 步骤/方法 1.打开 PowerPoint 软件,但是不要建立新幻灯片.如果打开的窗口里自己添加了空白幻灯片,请把它删除. 2.打开"视图"菜单,选择"母版"--"幻灯片母版"命令,会出现母版编辑窗口. 3.制作模板,最关键的一个因素就是背景图片,它是模板漂亮与否的根源.右击空白处,选择"背景&q

如何用PowerPoint制作电子相册

  如何用PowerPoint制作电子相册            一.首先,打开PowerPoint 2003,新建一个空白演示文稿. 二.点击工具栏左数第四个"插入"按钮,执行"插入→图片→新建相册"命令,打开"相册"对话框. 如果图片保存在磁盘,就单击下图的"文件/磁盘"按钮,打开"插入新图片"对话框,通过按"查找范围"右侧的下拉按钮,定位到相片所在的文件夹.选中需要制作成相册的图片

如何用Word制作常用公文

  如何用Word制作常用公文        第一步,进入Word界面 第二步,页面设置 从"文件"栏中单击"页面设置",弹出选项,在"页边距"栏中选择"上:37mm;下:35mm;左:28mm;右:26mm".在"纸张"栏中选择"纸型:A4;宽度:210mm;高度:297mm".在"版式"栏选择"奇偶页不同:√;页眉:15mm;页脚:28mm".

教你如何用PS制作个性头像

教你如何用PS制作个性头像   一.选取图层并复制 首先在PS里面打开这张图: 选择快速选择工具的增加选取和减去选取,将人物圈出来,如下图: 然后在选区存在的情况下,选择背景图层 ctrl+J,复制选取内的图层为新一图层,如下图: 分类: PS入门教程

如何用WPS制作红头文件

  如何用WPS制作红头文件 撰写行政公文是办公室工作人员必备的工作技能之一,公文的撰写过程大体分为文头.正文.落款等三大部分.其中文头制作最繁琐,下面就通过"WPS文字",告诉大家怎样轻松掌握公文的文头制作技巧. 一.设置边框 首先,通过"插入→分隔符→连续分隔符"命令,将正文与文头区域分割成两节.然后鼠标左键单击"文件"→"页面设置",在出现的"页面设置"提示栏内选择"版式"选项卡,

教你如何用Excel制作施工管理日记

  对于在工地实习或者其他施工人员来说,常常会需要记录施工管理日记,其他软件的用法可以过于复杂,下面小编就来教你如何用Excel制作施工管理日记. 教你如何用Excel制作施工管理日记 1.例如计算砼的水泥用量;利用EXCEI编制出计算构件的长*宽*高*每立米砼水泥理论用量的程序.把各种构件∑数据统计出来就可以了. 2.例如计算砼的砂子用量;编制出计算构件的长*宽*高*每立米砼砂子理论用量的程序.把各种构件∑数据统计出来就可以了. 3.例如计算钢筋的用量;编制出计算构件的钢筋长*每米理论重量*根