<?php
// ------------------------------------------------------------------------- //
// Créer des stats visuelles sous forme de "camembert" //
// ------------------------------------------------------------------------- //
// Auteur: Fabrice Potec <fpotec@nerim.fr> //
// Web: http://www.djfab.net/ //
// ------------------------------------------------------------------------- //
/*
fonction qui crée un camembert (stats visuelles) suivant des valeurs entrantes.
Cette fonction est une adaptation d'une fonction trouvée dans un bouquin à ma
sauce.
*/
// ================================================== //
// La librairie graphique php3_gd doit être installée.
// Sous windows ajoutez au début : dl("php3_gd.dll");
// ================================================== //
// dl("php3_gd.dll"); // uniquement sous windows (laissez en commentaire sinon)
/*
Cette fonction permet de dessiner une portion de camembert
*/
function Portion($xc,$yc,$diametre,$epaisseur,$dep,$couleur,$image,$caption)
{
/* Définition de la couleur du fond (R,V,B) */
$bgcolor = imagecolorallocate($image, 0, 0, 0);
for( $i=$diametre ; $i>=0 ; $i-- )
{
imagearc($image,$xc,$yc,$i,$i,$dep,$dep+$epaisseur,$couleur);
}
$alpha = ($dep + ($epaisseur/2)) * ((2*M_PI)/360);
$cs = 95 * cos($alpha);
$sn = 95 * sin($alpha);
$xt = $xc + $cs;
$yt = $yc + $sn;
imagestring($image, 2, $xt, $yt, $caption, $bgcolor);
}
/*
Cette fonction construit le camembert à partir du tableau des valeurs ($tb)
*/
function Camembert($tabval)
{
$img = imagecreate(230,200);
/* Définition de la couleur de la police (R,V,B) */
$fontcolor = imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $fontcolor);
$total = 0;
for( $i=0 ; $i<sizeof($tabval) ; $i++ )
{
$total = $total + $tabval[$i];
}
$unite = 360/$total;
$begin = 190;
for( $i=0 ; $i<sizeof($tabval) ; $i++ )
{
/*
Définition des couleurs des portions (ici 5 couleurs sont définies).
Veillez à définir autant de couleurs que de valeurs entrantes dans "$tb".
*/
if( $i == 0 )
{ $col1 = "255"; $col2 = "0"; $col3 = "0"; } # rouge (1e portion)
if( $i == 1 )
{ $col1 = "0"; $col2 = "0"; $col3 = "255"; } # bleu (2e portion)
if( $i == 2 )
{ $col1 = "255"; $col2 = "255"; $col3 = "0"; } # jaune (3e portion)
if( $i == 3 )
{ $col1 = "0"; $col2 = "255"; $col3 = "0"; } # vert (4e portion)
if( $i == 4 )
{ $col1 = "255"; $col2 = "0"; $col3 = "255"; } # violet (5e portion)
if( $i >= 5 )
{ $col1 = "0"; $col2 = "0"; $col3 = "0"; } # noir (au dela)
$coul = imagecolorallocate($img,$col1,$col2,$col3);
$part = $tabval[$i]*$unite;
portion(110, 100, 120, $part, $begin, $coul, $img, number_format($tabval[$i],1)." %");
$begin = $begin + $part;
}
$Camembert = imagegif($img);
}
/* Le total des valeurs entrantes doit être égal à 100 pour ne pas fausser
les stats */
$tb = array(5.3,14.9,19.2,40.1,20.5);
/* Appel de la fonction */
Camembert($tb);
?>