• 饼状图


    <?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

  • 相关阅读:
    C#规范整理·异常与自定义异常
    C#规范整理·资源管理和序列化
    C#规范整理·泛型委托事件
    C#规范整理·集合和Linq
    <抽象工厂>比<工厂方法>多了啥(区别)
    <工厂方法>比<简单工厂>多了啥(区别)
    Unable to start Ocelot because either a ReRoute or GlobalConfiguration
    MySQL服务安装
    mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”)的处理方法
    使用博客系统发生_STORAGE_WRITE_ERROR_错误
  • 原文地址:https://www.cnblogs.com/feiyun8616/p/6444063.html
Copyright © 2020-2023  润新知