Home  >  Article  >  Backend Development  >  Looking for a pie chart or bar chart php generation class or example

Looking for a pie chart or bar chart php generation class or example

高洛峰
高洛峰Original
2016-12-01 15:06:261007browse

PHP code:------------------------------------------------ ----------------------------------
/*------------- -------------------------------------------------- ----------*/
//
// Module Name: A 3D pie chart class
//
// Author:Avenger(avenger@php.net) Last Modify: 2002-10- 30 11:19
// Copyright (c) 2002 by Avenger
/*--------------------------------- ----------------------------------------*/

//Public function part

//Convert angles to radians
function deg2Arc($degrees) {
return($degrees * (pi()/180.0));
}

//RGB
function getRGB($color){
$R= ($color>>16) & 0xff;
$G=($color>>8) & 0xff;
$B=($color) & 0xff;
return (array($R,$G,$B ); $deg)) * $va;
$y= sin(deg2Arc($deg)) * $vb;
return (array($x, $y));
}


//3D pie chart class

class Pie3d{

var $a; //Major semi-axis of ellipse
var $b; //Minor semi-axis of ellipse
var $DataArray; //Data of each sector
var $ColorArray; //Color of each sector It is required to be written in hexadecimal but not preceded by 0x
var $Fize; //Font size
//The edges and shadows are black

function Pie3d($pa=60,$pb=30,$sData="100,200,300,400,500 ", $sColor="ee00ff,dd0000,cccccc,ccff00,00ccff",$fontsize=1) {
$this->a=$pa;
$this->b=$pb;
$this-> ;DataArray=split(",",$sData);
$this->ColorArray=split(",",$sColor);
$this->Fsize=$fontsize;
}

function setA($ v){
$this->a=$v;
}

function getA(){
return $this->a;
}

function setB($v){
$this->b =$v;
}

function getB(){
return $this->b;
}

function setDataArray($v){
$this->DataArray=split(",",$v) ;
}

function getDataArray($v){
return $this->DataArray;
}

function setColorArray($v){
$this->ColorArray=split(",",$v);
}

function getColorArray(){
return $this->ColorArray;
}


function DrawPie(){
$fsize=$this->Fsize;
$image=imagecreate($this-> a*2+40,$this->b*2+40);
$PieCenterX=$this->a+10;
$PieCenterY=$this->b+10;
$DoubleA=$this ->a*2;
$DoubleB=$this->b*2;
list($R,$G,$B)=getRGB(0);
$colorBorder=imagecolorallocate($image,$R, $G,$B);
$DataNumber=count($this->DataArray);

//$DataTotal
for($i=0;$i<$DataNumber;$i++) $DataTotal+=$this- >DataArray[$i]; //Calculate the data and

//Fill the background
imagefill($image, 0, 0, imagecolorallocate($image, 255, 255, 255));

/*
** Draw Each sector
*/

$Degrees = 0;
for ($i = 0; $i < $DataNumber; $i++) {
$StartDegrees = round($Degrees);
$Degrees += (($ this->DataArray[$i]/$DataTotal)*360);
$EndDegrees = round($Degrees);
$percent = number_format($this->DataArray[$i]/$DataTotal*100, 1 );
list($R,$G,$B)=getRGB(hexdec($this->ColorArray[$i]));
$CurrentColor=imagecolorallocate($image,$R,$G,$B) ;
if ($R>60 and $R<256) $R=$R-60;
if ($G>60 and $G<256) $G=$G-60;
if ($B>60 and $B<256) $B=$B-60;
$CurrentDarkColor=imagecolorallocate($image,$R,$G,$B);

//Draw a fan-shaped arc
imagearc($image,$PieCenterX,$ PieCenterY,$DoubleA,$DoubleB,$StartDegrees,$EndDegrees,$CurrentColor);

//Draw a straight line
list($ArcX, $ArcY) = pie_point($StartDegrees, $this->a, $this-> ;b);
imageline($image,$PieCenterX,$PieCenterY,floor($PieCenterX + $ArcX),floor($PieCenterY + $ArcY),$CurrentColor);

//Draw a straight line
list($ArcX, $ArcY) = pie_point($EndDegrees,$this->a , $this->b);
imageline($image,$PieCenterX,$PieCenterY,ceil($PieCenterX + $ArcX),ceil($PieCenterY + $ArcY),$CurrentColor);

//Fill the sector
$MidPoint = round((($EndDegrees - $StartDegrees)/2) + $StartDegrees);
list($ArcX, $ArcY) = Pie_point($MidPoint , $this->a*3/4 , $this->b*3/4);

imagefilltoborder($image,floor($PieCenterX + $ArcX),floor($PieCenterY + $ArcY),$ CurrentColor,$CurrentColor);
imagestring($image,$fsize,floor($PieCenterX + $ArcX-5),floor($PieCenterY + $ArcY-5),$percent."%",$colorBorder);

//Draw shadow
if ($StartDegrees>=0 and $StartDegrees<=180){
if($EndDegrees<=180){
for($k = 1; $k < 15; $k++)
imagearc( $image,$PieCenterX, $PieCenterY+$k,$DoubleA, $DoubleB, $StartDegrees, $EndDegrees, $CurrentDarkColor);
}else{
for($k = 1; $k < 15; $k++)
imagearc ($image,$PieCenterX, $PieCenterY+$k,$DoubleA, $DoubleB, $StartDegrees, 180, $CurrentDarkColor);
}
}
}

//Output the generated image
imagepng($image,'consture.png');
imagedestroy($image);
}//End drawPie()
}//End class
$pie = new Pie3d;
$pie->Pie3d($pa=300,$pb=150,$sData="100,200,300,400,500", $sColor="ee00ff,dd0000,cccccc,ccff00,ddddaa",$fontsize=5);
$pie->DrawPie();
echo '交易分析图';

?>

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn