<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      用PHP制作餅圖調查表

      [摘要]在調查程序中,我們需要根據統計的數據來 生成各種圖表來生動的表示調查的百分比 。在PHP在這方面也是不負眾望,它中可以通過加載GD庫來實現一開始。餅狀圖表對于查看一個值占總值的百分比是一個好的方法,F在我們就用PHP來實現一個餅形圖表,給大家講述PHP在這方面的應用。它的設計思想是:首先以用ima...

      在調查程序中,我們需要根據統計的數據來 生成各種圖表來生動的表示調查的百分比 。在PHP在這方面也是不負眾望,它中可以通過加載GD庫來實現一開始。餅狀圖表對于查看一個值占總值的百分比是一個好的方法,F在我們就用PHP來實現一個餅形圖表,給大家講述PHP在這方面的應用。它的設計思想是:首先以用imagecreate()來生成一個空白圖形,然后在空白圖形中用imageare()圓弧函數先畫圓弧,再畫兩條線連接圓心和圓弧端點(PHP圖像函數不能畫扇形),再用imagefilltoborder函數來填充扇形。其程序實現如下:
      $#@60;?php

      /*
      把角度轉換為弧度
      */
      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));
      }
      // 填充圖表的參數
      $ChartDiameter = 200; //圖表直徑
      $ChartFont = 2; //圖表字體
      $ChartFontHeight = imagefontheight($ChartFont);//圖表字體的大小
      $ChartData = array( "75","45");//用于生成圖表的數據,可通過數據庫來取得來確定
      //$ChartLabel = array("yes", "no"); //數據對應的名稱

      //確定圖形的大小
      $ChartWidth = $ChartDiameter + 20;
      $ChartHeight = $ChartDiameter + 20 +
      (($ChartFontHeight + 2) * count($ChartData));

      //確定統計的總數
      for($index = 0; $index $#@60; 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, 0x00, 0x00, 0x00);
      $colorText = imagecolorallocate($image, 0x00, 0x00, 0x00);

      $colorSlice = imagecolorallocate($image, 0xFF, 0x00, 0x00);
      $colorSlice[] = imagecolorallocate($image, 0x00, 0xFF, 0x00);


      //填充背境
      imagefill($image, 0, 0, $colorBody);


      /*
      ** 畫每一個扇形
      */
      $Degrees = 0;
      for($index = 0; $index $#@60; 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);
      }


      [page_break]

      //畫邊框
      imagearc($image,
      $ChartCenterX,
      $ChartCenterY,
      $ChartDiameter,
      $ChartDiameter,
      0,
      180,
      $colorBorder);

      imagearc($image,
      $ChartCenterX,
      $ChartCenterY,
      $ChartDiameter,
      $ChartDiameter,
      180,
      360,
      $colorBorder);

      imagearc($image,
      $ChartCenterX,
      $ChartCenterY,
      $ChartDiameter+7,
      $ChartDiameter+7,
      0,
      180,
      $colorBorder);

      imagearc($image,
      $ChartCenterX,
      $ChartCenterY,
      $ChartDiameter+7,
      $ChartDiameter+7,
      180,
      360,
      $colorBorder);

      imagefilltoborder($image,
      floor($ChartCenterX + ($ChartDiameter/2) + 2),
      $ChartCenterY,
      $colorBorder,
      $colorBorder);

      //畫圖例
      for($index = 0; $index $#@60; count($ChartData); $index++)
      {
      $CurrentColor = $colorSlice[$index%(count($colorSlice))];
      $LineY = $ChartDiameter + 20 + ($index*($ChartFontHeight+2));

      //draw color box
      imagerectangle($image,
      10,
      $LineY,
      10 + $ChartFontHeight,
      $LineY+$ChartFontHeight,
      $colorBorder);

      imagefilltoborder($image,
      12,
      $LineY + 2,
      $colorBorder,
      $CurrentColor);

      //畫標簽
      imagestring($image,
      $ChartFont,
      20 + $ChartFontHeight,
      $LineY,
      "$ChartLabel[$index]: $ChartData[$index]",
      $colorText);
      }

      //到此腳本 已經生了一幅圖像的,現在需要的是把它發到瀏覽器上,重要的一點是要將標頭發給瀏覽器,讓它知道是一個GIF文件。不然的話你只能看到一堆奇怪的亂碼

      header("Content-type: image/gif");
      //輸出生成的圖片
      imagegif($image);
      ?$#@62;
      保存為chart.php,運行程序其結果如圖1.
      但這是在服務器端生在GIF圖片,我們要在HTML文件中應用就需要如下格式來調用它:
      $#@60;?php
      echo "$#@60;img src=chart.php $#@62; "
      ?$#@62;

        注:運行環境為apache_1_3_12+php-4.0RC1+win98,windows平臺下. 在PHP中圖像函數都是在GD庫中完成,GD庫實際是處理GIF格式的免費軟件。要加載GD擴展才能使用php4的GD庫可以到www.phpuser.com下載。解壓COPY php_gd.dll文件到PHP的執行目錄,然后編輯php.ini配置文件,找到配置文件中;extension=php_gd.dll"這行 去掉";"號,如果沒有發現則在配置文件的Dynamic Extensions 后增加一行extension=php_gd.dl。最后運行phpinfo()函數,你就可以看到支持信息。 





      日韩精品一区二区三区高清