Heim  >  Artikel  >  Backend-Entwicklung  >  Suchen Sie nach einer Klasse oder einem Beispiel zur PHP-Generierung für Kreisdiagramme oder Balkendiagramme

Suchen Sie nach einer Klasse oder einem Beispiel zur PHP-Generierung für Kreisdiagramme oder Balkendiagramme

高洛峰
高洛峰Original
2016-12-01 15:06:26955Durchsuche

PHP-Code:--------------- ------ ----------------------------------
/*----- ---- ---------------------------------------------- ---- --------------*/
//
// Modulname: Eine 3D-Kreisdiagrammklasse
//
// Autor: Avenger(avenger @php.net) Letzte Änderung: 30.10.2002 11:19
// Copyright (c) 2002 von Avenger
/*-------------- --- -------------------------------- --- ------*/

//Öffentlicher Funktionsteil

//Winkel in Bogenmaß umwandeln
function deg2Arc($degrees) {
return($ Grad * (pi()/180.0));
}

//RGB
function getRGB($color){
$R=($color>>16) & 0xff ;
$G=($color>>8) & 0xff;
$B=($color) & 0xff;
return (array($R,$G,$B));
}

// Ermitteln Sie die Werte von x- und y-Punkten auf der Ellipse mit dem Mittelpunkt von (0, 0)
function pie_point($deg,$va,$vb){
$x= cos(deg2Arc($deg)) * $va;
$y= sin(deg2Arc($deg)) * $vb;
return (array($x, $y));
}


//3D-Kreisdiagrammklasse

Klasse Pie3d{

var $a; //Haupthalbachse der Ellipse
var $ b; //Ellipse kurze Halbachse
var $DataArray; //Daten jedes Sektors
var $ColorArray; //Die Farbe jedes Sektors muss hexadezimal geschrieben werden, ohne dass 0x vorangestellt wird
var $Fize; / /Schriftgröße
//Die Kanten und Schatten sind schwarz

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;
}

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

Funktion 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 ]; //Berechnen Sie die Summe der Daten

//Füllen Sie den Hintergrund
imagefill($image, 0, 0, imagecolorallocate($image, 255, 255, 255)) ;

/*
** Zeichnen Sie jeden Sektor
*/

$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;
wenn ($G>60 und $G<256) $G=$G-60;
wenn ($B>60 und $B<256) $B=$ B-60;
$ CurrentDarkColor=imagecolorallocate($image,$R,$G,$B);

//Zeichne einen Fächerbogen
imagearc($image,$PieCenterX,$PieCenterY ,$DoubleA,$DoubleB,$StartDegrees ,$EndDegrees,$CurrentColor);

//Eine gerade Linie zeichnen
list($ArcX, $ArcY) = pie_point($StartDegrees, $this-> ;a, $this->b);
imageline($image,$PieCenterX,$PieCenterY,floor($PieCenterX + $ArcX),floor($PieCenterY + $ArcY),$CurrentColor);

//Eine gerade Linie zeichnen
list ($ArcX, $ArcY) = pie_point($EndDegrees,$this->a , $this->b);
imageline($image,$ PieCenterX,$PieCenterY,ceil($PieCenterX + $ArcX) ,ceil($PieCenterY + $ArcY),$CurrentColor);

//Den Sektor füllen
$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);

//Schatten zeichnen
if ($StartDegrees> =0 und $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, $ PieCenter das generierte Bild
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 '交易分析图';

?>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn