Using PHP to make pie chart Questionnaire _php Tutorial

Source: Internet
Author: User
In the investigative process, we need to generate a variety of charts based on statistical data to graphically represent the percentage of surveys. In PHP in this respect is also not negative expectations, it can be loaded by the GD library to achieve the beginning. A pie chart is a good way to view the percentage of a value as a percent of the total. Now we are using PHP to implement a pie chart, to tell you about the application of PHP in this regard. Its design idea is: first to use Imagecreate () to generate a blank shape, and then in a blank shape with imageare () Arc function first draw arc, and then draw two lines to connect the center of the Circle and the arc end (PHP image function can not be drawn fan), Then use the Imagefilltoborder function to fill the sector. Its program is implemented as follows:
$#@60;? Php

/*
Convert the angle to radians
*/
function radians ($degrees)
{
Return ($degrees * (pi ()/180.0));
}
/*
* * Gets the value of x, Y points on the Circle Circle (0,0)
*/
function Circle_point ($degrees, $diameter)
{
$x = cos (radians ($degrees)) * ($diameter/2);
$y = sin (radians ($degrees)) * ($diameter/2);

Return (Array ($x, $y));
}
Fill the parameters of the chart
$ChartDiameter = 200; Chart diameter
$ChartFont = 2; Chart font
$ChartFontHeight = Imagefontheight ($ChartFont);//The size of the chart font
$ChartData = Array ("75", "45");//The data used to generate the chart can be obtained from the database to determine
$ChartLabel = Array ("Yes", "no"); The name that corresponds to the data

Determine the size of a graphic
$ChartWidth = $ChartDiameter + 20;
$ChartHeight = $ChartDiameter + 20 +
(($ChartFontHeight + 2) * COUNT ($ChartData));

Determine the total number of statistics
for ($index = 0; $index $#@60; count ($ChartData); $index + +)
{
$ChartTotal + = $ChartData [$index];
}

$ChartCenterX = $ChartDiameter/2 + 10;
$ChartCenterY = $ChartDiameter/2 + 10;


Generate Blank Graphics
$image = Imagecreate ($ChartWidth, $ChartHeight);

assigning colors
$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);


Fill the back border
Imagefill ($image, 0, 0, $colorBody);


/*
* * Draw every fan
*/
$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))];

Drawing F
Imagearc ($image, $ChartCenterX, $ChartCenterY, $ChartDiameter,
$ChartDiameter, $StartDegrees, $EndDegrees, $CurrentColor);

Draw a line
List ($ArcX, $ArcY) = Circle_point ($StartDegrees, $ChartDiameter);
Imageline ($image, $ChartCenterX, $ChartCenterY, floor ($ChartCenterX + $ArcX),
Floor ($ChartCenterY + $ArcY), $CurrentColor);
Draw a line
List ($ArcX, $ArcY) = Circle_point ($EndDegrees, $ChartDiameter);
Imageline ($image, $ChartCenterX, $ChartCenterY, ceil ($ChartCenterX + $ArcX),
Ceil ($ChartCenterY + $ArcY), $CurrentColor);

Fill sector
$MidPoint = Round ((($EndDegrees-$StartDegrees)/2) + $StartDegrees);
List ($ArcX, $ArcY) = Circle_point ($MidPoint, $ChartDiameter/2);
Imagefilltoborder ($image, floor ($ChartCenterX + $ArcX), floor ($ChartCenterY + $ArcY),
$CurrentColor, $CurrentColor);
}

This news a total of 2 pages, currently on the 1th page 1 2


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

Drawing example
for ($index = 0; $index $#@60; count ($ChartData); $index + +)
{
$CurrentColor = $colorSlice [$index% (count ($colorSlice))];
$LineY = $ChartDiameter + + ($index * ($ChartFontHeight +2));

Draw Color Box
Imagerectangle ($image,
10,
$LineY,
Ten + $ChartFontHeight,
$LineY + $ChartFontHeight,
$colorBorder);

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

Draw Labels
Imagestring ($image,
$ChartFont,
+ $ChartFontHeight,
$LineY,
"$ChartLabel [$index]: $ChartData [$index]",
$colorText);
}

To this script has already had an image of, now need to send it to the browser, it is important to send the hair to the browser, let it know is a GIF file. Otherwise, you can only see a bunch of weird gibberish.

Header ("Content-type:image/gif");
Output the resulting picture
Imagegif ($image);
? $#@62;
Save As Chart.php, run the program with its result 1.
But this is born in a GIF image on the server, and we want to apply it in an HTML file in the following format to invoke it:
$#@60;? Php
echo "$#@60;img src=chart.php $#@62;"
? $#@62;

Note: The operating environment is under the Apache_1_3_12+php-4.0rc1+win98,windows platform. In PHP, the image function is completed in the GD library, the GD library is actually a free software processing GIF format. To load the GD extension, you can use PHP4 's GD library to download to www.phpuser.com. Unzip the copy php_gd.dll file to the execution directory of PHP, then edit the php.ini configuration file, locate the configuration file, Extension=php_gd.dll "this line removes"; ", if not found, the dynamic in the config file. Add a line of extension=php_gd.dl after Extensions. Finally run the Phpinfo () function and you can see the support information.

This news a total of 2 pages, currently on the 2nd Page 1 2


http://www.bkjia.com/PHPjc/532657.html www.bkjia.com true http://www.bkjia.com/PHPjc/532657.html techarticle in the investigative process, we need to generate a variety of charts based on statistical data to graphically represent the percentage of surveys. In PHP in this respect is also not negative expectations, it can be loaded by the G ...

  • Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.