zoukankan      html  css  js  c++  java
  • 饼状图

    <?php
    $array=$_POST['array']; //接收所有的值并存入数组$array中
    $options=array('伙食','住房','交通','通信','其他'); //定义存放选项的数组$options
    $image=imagecreatetruecolor(400,400);
    imagefill($image,0,0, imagecolorallocate($image,255,255,255)); //背景颜色设为白色
    $black=imagecolorallocate($image,0,0,0);
    $x=200;$y=200; //圆心的坐标
    $w=360;$h=360; //圆的宽和高,即半径为180
    $i=0; //存放初始角度为0,在3点钟位置
    $sum=0; //存放总数据量
    $temp=0;
    $font="C:/Windows/Fonts/simfang.ttf"; //字体文件,仿宋体
    foreach($array as $value)
    {
    $sum=$sum+$value; //计算总数据量
    }
    for($k=0;$k<count($array);$k++) //遍历数组$array
    {
    $temp=$temp+$array[$k]; //中间数据
    //圆盘中的每条分界线所在的角度赋到数组$points中
    $points[$k]=($temp/$sum)*360;
    $percent[$k]=number_format(($array[$k]/$sum)*100,1); //计算每组数据占总数据的百分比
    if($k==0)
    {
    //如果是数组$array的第一组数据
    $startdegrees=$i; //起始角度设为0
    $enddegrees=$points[$k]; //终点角度为第一条分界线所在角度
    }
    else
    {
    //如果不是数组$array的第一组数据
    $startdegrees=$points[$k-1]; //起始角度为前一条分界线的角度
    $enddegrees=$points[$k]; //终点角度为下一条分界线的角度
    }
    $midpoints=$startdegrees+($enddegrees-$startdegrees)/2; //计算画出的扇形中心线所在角度
    $radian=$midpoints*pi()/180; //将角度转化为弧度
    //随机产生颜色
    $color=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));
    //使用随机颜色画圆弧
    imagefilledarc($image, $x, $y, $w, $h, $i, $points[$k], $color, IMG_ARC_PIE);
    //对要在圆盘中输入的中文进行编码
    //$codetext=iconv("GB2312","UTF-8",$options[$k].$percent[$k]."%");

    $codetext=iconv("UTF-8","UTF-8",$options[$k].$percent[$k]."%");


    if($midpoints>=90&&$midpoints<=270)
    {
    //如果中心线处于左半圆则从中心线3/4处的点开始输入
    $mid_x=(cos($radian)*$w/2)*3/4+$x;
    $mid_y=(sin($radian)*$h/2)*3/4+$y;
    $angle=180-$midpoints; //文字的偏斜角度
    }
    else
    {
    //如果中心线处于右半圆则从中心线1/2处的点开始输入
    $mid_x=(cos($radian)*$w/2)/2+$x;
    $mid_y=(sin($radian)*$h/2)/2+$y;
    $angle=360-$midpoints;
    }
    //在圆盘的扇形中以角度$angle输入$codetext中的内容
    imagettftext($image, 12, $angle,$mid_x,$mid_y, $black, $font, $codetext);
    $i=$points[$k]; //重新定义起始角度
    }
    $file="../good/image/EX5_7.gif"; //定义一个文件名
    imagegif($image,$file); //将图像保存为EX5_7.gif文件
    echo "<font face='黑体' size='5' color='blue'>生活费用百分比分布图:</font><br/>";
    echo "<img src=$file>"; //输出图片
    imagedestroy($image);
    ?>

    2.建议使用流程图,梳理下该段程序。会更加易于阅读

    https://www.processon.com/setting

  • 相关阅读:
    Table XXX is marked as crashed and should be repaired问题
    冗余带来的麻烦
    thinkPHP模板引擎案例
    css案例学习之float浮动
    css案例学习之父子块的margin
    block,inline和inline-block概念和区别
    css案例学习之div与span的区别
    css案例学习之盒子模型
    css案例学习之层叠样式
    css案例学习之继承关系
  • 原文地址:https://www.cnblogs.com/feiyun8616/p/6444063.html
Copyright © 2011-2022 走看看