|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
GRAPHIQUE CAMEMBERT 3D
Information sur la source
Description
Bonjours Voila un code que j'ai crée, mais je sais pas trop se qu'il vaut , alors je le poste en débutant. Alors ce code peu avoir plus ou moins d'utilité mais je trouve qu'il peu être pratique. Une fonction qui crée un camembert avec comme seul argument obligatoire un array. Cette array doit etre composé de la fason suivant: array( 'Valeur1' => '14;00FFFF', 'Valeur2' => '45;FF00FF', ... ... ) Valeur1 apparait 14 fois et sera afficher avec la couleur 00FFFF Valeur2 apparait 45 fois et sera afficher avec la couleur FF00FF ... ... De plus d'autre argument sont possible mais pas obligatoire. comme: Les dimmention de l'image L'affichage ou non des pourcentage Nombre de chiffre apres la virgule Epaisseur du camembert
Source
- <?PHP
-
- function camembert($tableau,$imlargeur = 100,$imhauteur = 70,$aftext = false,$camhauteur = 20,$arondi = 1)
- {
- //vérification des donnée à afficher
- if(!is_array($tableau) || empty($tableau))
- {
- return false;
- }
- else
- {
- //Initialisation des valeur
- if(empty($imlargeur))$imlargeur=100;
- if(empty($imhauteur))$imhauteur=70;
- if(empty($aftext)) $aftext=false;
- if(empty($camhauteur))$camhauteur=20;
- if($arondi != 0 && empty($arondi)) $arondi=1;
-
- $array_index=array_keys($tableau);
- $nbr=count($array_index);
-
-
- // Création de l'image
- $image = imagecreatetruecolor($imlargeur, $imhauteur);
-
- //séparation des donnée pour un traitement plus clair
- $array_nombre= array();
- $array_couleur_clair= array();
- $array_couleur_sombre= array();
-
- for($n=0;$n<$nbr;$n++)
- {
-
- //separation nombre et couleur clair
- $value = explode(";", $tableau[$array_index[$n]]);
-
- //création de la couleur sombre
- //premiere partie de la couleur
- $couleur1 = (hexdec($value[1][0].$value[1][1]) - hexdec('A3'));
- if($couleur1 < 0)
- {
- $couleur_sombre_1 = 00;
- }
- elseif($couleur1 >0 && $couleur1 < 10)
- {
- $couleur_sombre_1 = '0'.dechex($couleur1);
- }
- else
- {
- $couleur_sombre_1 = dechex($couleur1);
- }
- //deuxieme partie de la couleur
- $couleur2 = (hexdec($value[1][2].$value[1][3]) - hexdec('A3'));
- if($couleur2 < 0)
- {
- $couleur_sombre_2 = 00;
- }
- elseif($couleur2 > 0 && $couleur2 < 10)
- {
- $couleur_sombre_2 = '0'.dechex($couleur2);
- }
- else
- {
- $couleur_sombre_2 = dechex($couleur2);
- }
- //troisieme partie de la couleur
- $couleur3 = (hexdec($value[1][4].$value[1][5]) - hexdec('A3'));
- if($couleur3 < 0)
- {
- $couleur_sombre_3 = 00;
- }
- elseif($couleur3 > 0 && $couleur3 < 10)
- {
- $couleur_sombre_3 = '0'.dechex($couleur3);
- }
- else
- {
- $couleur_sombre_3 = dechex($couleur3);
- }
-
-
-
-
- $couleur_sombe = imagecolorallocate($image, hexdec($couleur_sombre_1), hexdec($couleur_sombre_2), hexdec($couleur_sombre_3));
- $couleur_clair = imagecolorallocate($image, hexdec($value[1][0].$value[1][1]), hexdec($value[1][2].$value[1][3]), hexdec($value[1][4].$value[1][5]));
- //ajout dans les arrays
- $array_couleur_sombre[$array_index[$n]]=$couleur_sombe;
- $array_nombre[$array_index[$n]]=$value[0];
- $array_couleur_clair[$array_index[$n]]=$couleur_clair;
- }
- //Nombre total d'élement
- $somme=array_sum($array_nombre);
-
- //affichage du text
- $decal=$imlargeur;
- if($aftext)
- {
- for($n=0;$n<$nbr;$n++)
- {
- $pourcent = $array_index[$n].' : '.round(($array_nombre[$array_index[$n]]*100/$somme),$arondi).' %';
- $x = ($imlargeur - (strlen($pourcent)*6));
- if($x<$decal)$decal=$x;
- $y = ($n*10);
- imagestring($image, 2, $x, $y, $pourcent, $array_couleur_clair[$array_index[$n]]);
- //création de l'arc de disque
- imagefilledarc($image, 50, $i, 100, 50, $angle_prec, $angle_suiv, $array_couleur_clair[$array_index[$n]], IMG_ARC_PIE);
- }
- }
-
-
- // Création de l'effet 3D
- for ($i = (($decal/4)+$camhauteur); $i > ($decal/4); $i--) {
- for($n=0;$n<$nbr;$n++)
- {
- //calcule des angles de debut et fin
- if($n==0)
- {
- $angle_prec = 0;
- }
- else
- {
- $nombre = 0;
- for($n1=0;$n1<$n;$n1++)
- {
- $nombre += $array_nombre[$array_index[$n1]];
- }
- $angle_prec = ($nombre*360/$somme);
- }
- $angle_suiv = ($angle_prec + ($array_nombre[$array_index[$n]]*360/$somme));
-
- //création de l'arc de disque
- imagefilledarc($image, ($decal/2), $i, $decal, ($decal/2) , $angle_prec, $angle_suiv, $array_couleur_sombre[$array_index[$n]], IMG_ARC_PIE);
- }
- }
-
- //création de la tête du camembert
- for($n=0;$n<$nbr;$n++)
- {
- //calcule des angles de debut et fin
- if($n==0)
- {
- $angle_prec = 0;
- }
- else
- {
- $nombre = 0;
- for($n1=0;$n1<$n;$n1++)
- {
- $nombre += $array_nombre[$array_index[$n1]];
- }
- $angle_prec = ($nombre*360/$somme);
- }
- $angle_suiv = ($angle_prec + ($array_nombre[$array_index[$n]]*360/$somme));
-
- //création de l'arc de disque
- imagefilledarc($image, ($decal/2), ($decal/4), $decal, ($decal/2), $angle_prec, $angle_suiv, $array_couleur_clair[$array_index[$n]], IMG_ARC_PIE);
- }
-
- // Affichage de l'image
- header('Content-type: image/png');
- imagepng($image);
- imagedestroy($image);
- }
-
- }
-
-
- //Exemple d'utilisation
- $test=array('Boujour' => '25;00FF00', 'Salut' => '20;FF4455', 'Kikoo' => '35;00FFFF', 'Coucou' => '25;FFFF00');
- camembert($test,'300','300','0','50','2');
-
- ?>
<?PHP
function camembert($tableau,$imlargeur = 100,$imhauteur = 70,$aftext = false,$camhauteur = 20,$arondi = 1)
{
//vérification des donnée à afficher
if(!is_array($tableau) || empty($tableau))
{
return false;
}
else
{
//Initialisation des valeur
if(empty($imlargeur))$imlargeur=100;
if(empty($imhauteur))$imhauteur=70;
if(empty($aftext)) $aftext=false;
if(empty($camhauteur))$camhauteur=20;
if($arondi != 0 && empty($arondi)) $arondi=1;
$array_index=array_keys($tableau);
$nbr=count($array_index);
// Création de l'image
$image = imagecreatetruecolor($imlargeur, $imhauteur);
//séparation des donnée pour un traitement plus clair
$array_nombre= array();
$array_couleur_clair= array();
$array_couleur_sombre= array();
for($n=0;$n<$nbr;$n++)
{
//separation nombre et couleur clair
$value = explode(";", $tableau[$array_index[$n]]);
//création de la couleur sombre
//premiere partie de la couleur
$couleur1 = (hexdec($value[1][0].$value[1][1]) - hexdec('A3'));
if($couleur1 < 0)
{
$couleur_sombre_1 = 00;
}
elseif($couleur1 >0 && $couleur1 < 10)
{
$couleur_sombre_1 = '0'.dechex($couleur1);
}
else
{
$couleur_sombre_1 = dechex($couleur1);
}
//deuxieme partie de la couleur
$couleur2 = (hexdec($value[1][2].$value[1][3]) - hexdec('A3'));
if($couleur2 < 0)
{
$couleur_sombre_2 = 00;
}
elseif($couleur2 > 0 && $couleur2 < 10)
{
$couleur_sombre_2 = '0'.dechex($couleur2);
}
else
{
$couleur_sombre_2 = dechex($couleur2);
}
//troisieme partie de la couleur
$couleur3 = (hexdec($value[1][4].$value[1][5]) - hexdec('A3'));
if($couleur3 < 0)
{
$couleur_sombre_3 = 00;
}
elseif($couleur3 > 0 && $couleur3 < 10)
{
$couleur_sombre_3 = '0'.dechex($couleur3);
}
else
{
$couleur_sombre_3 = dechex($couleur3);
}
$couleur_sombe = imagecolorallocate($image, hexdec($couleur_sombre_1), hexdec($couleur_sombre_2), hexdec($couleur_sombre_3));
$couleur_clair = imagecolorallocate($image, hexdec($value[1][0].$value[1][1]), hexdec($value[1][2].$value[1][3]), hexdec($value[1][4].$value[1][5]));
//ajout dans les arrays
$array_couleur_sombre[$array_index[$n]]=$couleur_sombe;
$array_nombre[$array_index[$n]]=$value[0];
$array_couleur_clair[$array_index[$n]]=$couleur_clair;
}
//Nombre total d'élement
$somme=array_sum($array_nombre);
//affichage du text
$decal=$imlargeur;
if($aftext)
{
for($n=0;$n<$nbr;$n++)
{
$pourcent = $array_index[$n].' : '.round(($array_nombre[$array_index[$n]]*100/$somme),$arondi).' %';
$x = ($imlargeur - (strlen($pourcent)*6));
if($x<$decal)$decal=$x;
$y = ($n*10);
imagestring($image, 2, $x, $y, $pourcent, $array_couleur_clair[$array_index[$n]]);
//création de l'arc de disque
imagefilledarc($image, 50, $i, 100, 50, $angle_prec, $angle_suiv, $array_couleur_clair[$array_index[$n]], IMG_ARC_PIE);
}
}
// Création de l'effet 3D
for ($i = (($decal/4)+$camhauteur); $i > ($decal/4); $i--) {
for($n=0;$n<$nbr;$n++)
{
//calcule des angles de debut et fin
if($n==0)
{
$angle_prec = 0;
}
else
{
$nombre = 0;
for($n1=0;$n1<$n;$n1++)
{
$nombre += $array_nombre[$array_index[$n1]];
}
$angle_prec = ($nombre*360/$somme);
}
$angle_suiv = ($angle_prec + ($array_nombre[$array_index[$n]]*360/$somme));
//création de l'arc de disque
imagefilledarc($image, ($decal/2), $i, $decal, ($decal/2) , $angle_prec, $angle_suiv, $array_couleur_sombre[$array_index[$n]], IMG_ARC_PIE);
}
}
//création de la tête du camembert
for($n=0;$n<$nbr;$n++)
{
//calcule des angles de debut et fin
if($n==0)
{
$angle_prec = 0;
}
else
{
$nombre = 0;
for($n1=0;$n1<$n;$n1++)
{
$nombre += $array_nombre[$array_index[$n1]];
}
$angle_prec = ($nombre*360/$somme);
}
$angle_suiv = ($angle_prec + ($array_nombre[$array_index[$n]]*360/$somme));
//création de l'arc de disque
imagefilledarc($image, ($decal/2), ($decal/4), $decal, ($decal/2), $angle_prec, $angle_suiv, $array_couleur_clair[$array_index[$n]], IMG_ARC_PIE);
}
// Affichage de l'image
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
}
}
//Exemple d'utilisation
$test=array('Boujour' => '25;00FF00', 'Salut' => '20;FF4455', 'Kikoo' => '35;00FFFF', 'Coucou' => '25;FFFF00');
camembert($test,'300','300','0','50','2');
?>
Conclusion
Utilisation : Camembert(tableau source , largeur , hauteur , affiché text , epaiseur camembert , nompbre de chiffre apres la virgule); pour "affiché text": 1 = text affiché 0 = text caché Voici different exemple dutilisation : $test=array('Boujours' => '25;00FF00', 'Salut' => '25;FF4455', 'Kikoo' => '25;00FFFF', 'Coucou' => '25;FFFF00'); camembert($test); camembert($test,'200,'200','1'); camembert($test,'200,'','1','15','2');
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 15 juin 2006 21:51:41 :
- Oublie d'explication
- 17 juin 2006 12:58:54 :
- Modification suivant nos conseils.
Créeation d'un zip dans le quel il y a 2 camembert:
-Selui qui vous est presenté ici.
-Le même mais qui calcule automatiquement la hauteur pour que l'image soit la plus petite possible.
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
faire un graphique camembert 3D, a partir d'une base de données [ par otacon67 ]
je suis un newbies en PHP, et je voudrais savoir comment creer un camembert en 3D, a partir d'une base de données merci pour votre soutien et vo
Statistique graphique, pourquoi ne parler que de JPgraph ? [ par crazygogo ]
Pourquoi JPGRAPH ??? payant pour les sociétés.... alors qu'il existe ArtiChow : http://www.artichow.orgje fais de la pub pour ma source mais elle perm
mise a jour de graph via AJAX? [ par LaTatadu91 ]
Bonjour a tous; voila sur uen de mes pages php je créé un graphique(diagrmme en batons+courbes) a partir de données MYSQL ces d
Anumation graphique entre 2 pages [ par kleos chaos ]
Bonjour à tous Voyez vous , cela fait pas mal de temps que je cherche ce script et que je ne le trouve pas. J'ai essayer Javascript, php , CSS, r
créer des statistique a partir d une bdd [ par gabs77 ]
bonjour je suis débutant en php et je voudrais savoir comment on réalise des statistiques en histogramme ou en camembert par exemplea partir
Rafraichir une page [ par niko14 ]
Hello everybody!!Voila le bin's!!En fait voila, j'ai une page ou on choisit un type de budget et on valide!Qd on a validé on arrive sur une page
Je cherche un editeur php graphique sous linux, c'est urgent!!!!!!!!!! [ par sousou_one ]
Bonjour tt le monde, Je cherche un editeur php graphique sous linux, j'ai une distribution SUSE 10.0 est ce que quelqu'un peut m'aider? Merci d'avance
Graphique sous JpGraph !!! [ par lolo80000 ]
Bonjour à tous,Voila, pour réaliser des graphiques en php j'utilise Jpgraph comme librairie. Apres plusieurs recherches j'ai trouver comment
Interface DCOM Excel afficher les pourcentages d'un camembert [ par phdj238 ]
Après avoir ouvert l'interface new COM("Excel.application") Défini les cellules de ma feuille Excel, généré mon graphique camenbert J'essaie de mont
tableau de couleurs comme dans word [ par niko14 ]
slt tout le monde!VOila mon probleme!J'ai un camembert donc je fais choisir les couleurs pour les differentes repartitions et en fait j'avais fait une
|
Téléchargements
Logiciels à télécharger sur le même thème :
|