Ben görüntü dolu yay işlevini kullanarak GD uzantısı ile dinamik bir pasta grafiği oluşturduk. Ben 11 değerlerine kadar, HTTP GET değişkenleri vasıtasıyla, bu komut geçmek. ilk değer, n, takip değerleri sayısıdır. n1, n2, n3, vb veri kendisidir. Bu tamsayı yüzdesidir. Amaç grafik şeklinde bir pasta grafiğinde yüzdelerini gösteren bir grafik yapmaktır.
: Ben bu çalıştırdığınızda
piechart.php? n = 2 ve n 1 = 20 & n2 = 80
Ben sadece siyah bir kutu olsun. Herhangi bir fikir? Herhangi bir soru sormak lütfen - teşekkürler!
<?php
// var load
$size=500;
//HTTP GET vars:
//N is the number of sections we have
//n1 is the percentage for part1
//n2 is the percentage for part2, and so on
$num=$_GET["n"];
//want to make a hard limit at 10 different sections
$num=min($num,10);
$percents;
$angles;
$angles[0]=0;
$percents[0]=NULL;
//load percents array. First value is NULL
for ($c=1;$c<=$num;$c++)
{
$percents[$c]=(int)$_GET["n".$c];
$angles[$c]=(int)round((($percents[$c-1]+$percents[$c])/100)*360);
}
$angles[$num]=360;
//create image
$half=round($size/2);
$image = imagecreatetruecolor($size, $size);
// colors
$colorR=array(0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x74, 0x33, 0xFF, 0x33, 0x66);
$colorG=array(0x00, 0x80, 0x00, 0xA5, 0xFF, 0xFF, 0x99, 0x00, 0x33, 0xFF);
$colorB=array(0xFF, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xFF, 0x66, 0x99, 0x33);
// shaded colors
$darkColorR=array(0x00, 0x00, 0x80, 0x80, 0x80, 0x3A, 0x1A, 0x80, 0x1A, 0x33);
$darkColorG=array(0x00, 0x40, 0x00, 0x52, 0x80, 0x80, 0x4C, 0x00, 0x1A, 0x80);
$darkColorB=array(0x80, 0x00, 0x00, 0x00, 0x00, 0x6A, 0x80, 0x33, 0x4C, 0x1A);
$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$black = imagecolorallocate($image, 0x00, 0x00, 0x00);
// make the 3D effect
$tempDarkColor;
for ($i = $half+round(.1*$half); $i > $half; $i--)
{
for ($j=0;$j<(count($angles)-1)&&$angles[$j]<180;$j++)
{
if ($darkColorR[$j]==NULL||$darkColorG[$j]==NULL||$darkColorB[$j]==NULL)
{
//if one of the colors is missing, set the entire color to white
$darkColorR[$j]=0x00;
$darkColorG[$j]=0x00;
$darkColorB[$j]=0x00;
}
$tempDarkColor[$j]= imagecolorallocate($image, $darkColorR[$j],$darkColorG[$j],$darkColorB[$j]);
imagefilledarc($image, $half, $i, $size, $half, $angles[$j], $angles[$j+1] , $tempDarkColor[$j], IMG_ARC_PIE);
}
}
//make the image
$imageColor;
for ($k=0;$k<(count($angles)-1);$k++)
{
if ($darkColorR[$k]==NULL||$darkColorG[$k]==NULL||$darkColorB[$k]==NULL)
{
//if one of the colors is missing, set the entire color to white
$colorR[$k]=0x00;
$colorG[$k]=0x00;
$colorB[$k]=0x00;
}
$tempColor[$k]= imagecolorallocate($image, $darkColorR[$k],$darkColorG[$k],$darkColorB[$k]);
imagefilledarc($image, $half, $half, $size, $half, $angles[$k], $angles[$k+1] , $tempColor[$k], IMG_ARC_PIE);
}
// flush image
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>