J'ai créé un graphique à secteurs dynamique avec l'extension GD à l'aide de la fonction d'arc rempli d'images. Je passe à ce script, via des variables HTTP GET, jusqu'à 11 valeurs. la première valeur, n, est le nombre de valeurs qui suivent. n1, n2, n3, etc. sont les données elles-mêmes. Ce sont des nombres entiers. L'objectif est de faire un graphique qui montrera les pourcentages dans un graphique à secteurs sous forme graphique.Problème de génération de diagrammes à secteurs dynamiques GD PHP
Quand je lance cela comme:
piechart.php n = 2 & n1 = 20 = 80 & n2
Je reçois seulement une boîte noire?. Des idées? Toutes les questions s'il vous plaît demander - merci!
<?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);
?>
Rappelez-vous que l'API graphiques Google est:
Mettre cela donne ensemble le code suivant assez limité (dans les fonctionnalités et les options de personnalisation). Si vous avez juste besoin de produire un diagramme simple et décent, c'est une bonne option. – phidah