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 !

HISTOGRAMME EMPILÉ 100 %


Information sur la source

Catégorie :Graphique Niveau : Débutant Date de création : 18/10/2004 Date de mise à jour : 19/10/2004 11:33:58 Vu : 5 604

Note :
8 / 10 - par 5 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Tout est dans le titre ...
 

Source

  • <?php
  • header("Content-type: image/png");
  • $couleur_barre = "51,255,255;255,255,102;204,0,51;51,102,204;51,255,0;50,3,255"; //les différentes couleurs des segments
  • $barre_coul = explode(";", $couleur_barre);
  • $valeurs = "20,27,5,26,30;40,80,10,20,30;100,200,30,400,30;220,123,456,55,30"; // entre ; les barres - entre , les valeurs de segments
  • $intitules = "segment 1;segment 2;segment 3;segment 4;segment 5"; //les intitulés des segments
  • $intitule = explode(";",$intitules);
  • $barres = explode(";",$valeurs);
  • $nb = count($barres);
  • for ($i=0;$i<$nb;$i++)
  • $valeurs_segment[$i] = explode(",", $barres[$i]);
  • $nb_couleurs = count($valeurs_segment[0]);
  • for ($i=0;$i<$nb_couleurs;$i++)
  • $couleurs[$i] = explode(",", $barre_coul[$i]);
  • for ($i=0;$i<$nb;$i++) // chaque barre
  • {
  • $valeur_barre[$i]=0;
  • for ($j=0;$j<$nb_couleurs;$j++)
  • $valeur_barre[$i] = $valeur_barre[$i]+$valeurs_segment[$i][$j];
  • }
  • $large = 30; //largeur d'une barre
  • $espace=10; //espace entre les barres
  • $largeur_img = (($large+$espace)*$nb)+200; // le +200 sert pour l'espace où s'écrit la légende
  • $hauteur_img = 390;
  • $police = 2; //police d'écriture des intitulés de segments
  • $police_pc = 1; //police d'écriture des pourcentages
  • $img = imageCreate($largeur_img, $hauteur_img);
  • $fond = imageColorAllocate($img, 240, 240, 240);
  • $noir = imageColorAllocate($img, 0, 0, 0);
  • imagefill($img,0,0,$fond);
  • $max = 350; // hauteur des barres
  • $x2=35; // position du graphique par rapport au côté gauche de l'image
  • $x1=0;
  • $y_haut=20; // position du graphique par rapport au haut de l'image
  • $y2=$max+$y_haut;
  • imageline($img, 5, $y_haut, 5, $y2, $noir);
  • $large_pc=(($large+$espace)*$nb)+20;
  • imageline($img, 5, $y_haut, $large_pc, $y_haut, $noir);
  • imagestring($img,$police_pc,12,$y_haut,"100 %",$noir);
  • $y_pc=round($max*0.25)+$y_haut;
  • imageline($img, 5, $y_pc, $large_pc, $y_pc, $noir);
  • imagestring($img,$police_pc,12,$y_pc,"75 %",$noir);
  • $y_pc=round($max*0.50)+$y_haut;
  • imageline($img, 5, $y_pc, $large_pc, $y_pc, $noir);
  • imagestring($img,$police_pc,12,$y_pc,"50 %",$noir);
  • $y_pc=round($max*0.75)+$y_haut;
  • imageline($img, 5, $y_pc, $large_pc, $y_pc, $noir);
  • imagestring($img,$police_pc,12,$y_pc,"25 %",$noir);
  • $y_pc=$max+$y_haut;
  • imageline($img, 5, $y_pc, $large_pc, $y_pc, $noir);
  • imagestring($img,$police_pc,12,$y_pc,"0 %",$noir);
  • for ($i=0;$i<$nb;$i++) // chaque barre
  • {
  • $x1=$x2;
  • $x2=$x1+$large;
  • $y1=$y_haut; // position du graphique par rapport au haut de l'image
  • for ($j=0;$j<$nb_couleurs;$j++) // chaque segment
  • {
  • // $valeurs_segment[$i][$j] = valeur de chaque segment de barre
  • // $valeur_barre[$i] = valeur du total de chaque barre
  • // $couleurs[$j][0],1,2 = valeur de chaque couleur de segment
  • $coul = imageColorAllocate($img, $couleurs[$j][0], $couleurs[$j][1], $couleurs[$j][2]);
  • $h = ($valeurs_segment[$i][$j]/$valeur_barre[$i])*100;
  • $h = round(($max*$h)/100); // hauteur de chaque segment
  • $y2=$y1+$h;
  • if ($y2>$max+$y_haut)
  • $y2=$max+$y_haut;
  • imagerectangle($img,$x1+$espace,$y1,$x2,$y2,$noir);
  • //imageFilledRectangle($img,$x1+$espace,$y1,$x2,$y2,$coul);
  • imageFilledRectangle($img,$x1+$espace+1,$y1+1,$x2-1,$y2-1,$coul);
  • $y1=$y2;
  • }
  • }
  • $y=20;
  • $x=$x2+50;
  • $x_ecrit=$x2+70;
  • for ($i=0;$i<count($intitule);$i++) // chaque intitulé
  • {
  • $y=$y+imageFontHeight($police)+10;
  • $coul = imageColorAllocate($img, $couleurs[$i][0], $couleurs[$i][1], $couleurs[$i][2]);
  • imagerectangle($img,$x,$y,$x+imageFontHeight($police),$y+imageFontHeight($police),$noir);
  • imageFilledRectangle($img,$x+1,$y+1,$x+imageFontHeight($police)-1,$y+imageFontHeight($police)-1,$coul);
  • imagestring($img,$police,$x_ecrit,$y,$intitule[$i],$noir);
  • }
  • imagePNG($img);
  • imageDestroy($img);
  • ?>
<?php
header("Content-type: image/png");
$couleur_barre = "51,255,255;255,255,102;204,0,51;51,102,204;51,255,0;50,3,255"; //les différentes couleurs des segments
$barre_coul = explode(";", $couleur_barre);

$valeurs = "20,27,5,26,30;40,80,10,20,30;100,200,30,400,30;220,123,456,55,30"; // entre ; les barres - entre , les valeurs de segments
$intitules = "segment 1;segment 2;segment 3;segment 4;segment 5"; //les intitulés des segments
$intitule = explode(";",$intitules);

$barres = explode(";",$valeurs);
$nb = count($barres);
for ($i=0;$i<$nb;$i++)
    $valeurs_segment[$i] = explode(",", $barres[$i]);
$nb_couleurs = count($valeurs_segment[0]);

for ($i=0;$i<$nb_couleurs;$i++)
    $couleurs[$i] = explode(",", $barre_coul[$i]);

for ($i=0;$i<$nb;$i++) // chaque barre
    {
    $valeur_barre[$i]=0;
    for ($j=0;$j<$nb_couleurs;$j++)
        $valeur_barre[$i] = $valeur_barre[$i]+$valeurs_segment[$i][$j];  
    }
$large = 30; //largeur d'une barre
$espace=10; //espace entre les barres
$largeur_img = (($large+$espace)*$nb)+200; // le +200 sert pour l'espace où s'écrit la légende
$hauteur_img = 390;
$police = 2; //police d'écriture des intitulés de segments
$police_pc = 1;   //police d'écriture des pourcentages 
$img = imageCreate($largeur_img, $hauteur_img);
$fond = imageColorAllocate($img, 240, 240, 240);
$noir = imageColorAllocate($img, 0, 0, 0);

imagefill($img,0,0,$fond);

$max = 350;  // hauteur des barres
$x2=35; // position du graphique par rapport au côté gauche de l'image
$x1=0;
$y_haut=20; // position du graphique par rapport au haut de l'image
$y2=$max+$y_haut;
imageline($img, 5, $y_haut, 5, $y2, $noir);
$large_pc=(($large+$espace)*$nb)+20;

imageline($img, 5, $y_haut, $large_pc, $y_haut, $noir);
imagestring($img,$police_pc,12,$y_haut,"100 %",$noir);

$y_pc=round($max*0.25)+$y_haut;
imageline($img, 5, $y_pc, $large_pc, $y_pc, $noir);
imagestring($img,$police_pc,12,$y_pc,"75 %",$noir);

$y_pc=round($max*0.50)+$y_haut;
imageline($img, 5, $y_pc, $large_pc, $y_pc, $noir);
imagestring($img,$police_pc,12,$y_pc,"50 %",$noir);

$y_pc=round($max*0.75)+$y_haut;
imageline($img, 5, $y_pc, $large_pc, $y_pc, $noir);
imagestring($img,$police_pc,12,$y_pc,"25 %",$noir);

$y_pc=$max+$y_haut;
imageline($img, 5, $y_pc, $large_pc, $y_pc, $noir);
imagestring($img,$police_pc,12,$y_pc,"0 %",$noir);


for ($i=0;$i<$nb;$i++) // chaque barre
    {
    $x1=$x2;
    $x2=$x1+$large;
    $y1=$y_haut; // position du graphique par rapport au haut de l'image
    for ($j=0;$j<$nb_couleurs;$j++) // chaque segment
        {
         // $valeurs_segment[$i][$j] = valeur de chaque segment de barre
         // $valeur_barre[$i] = valeur du total de chaque barre
         // $couleurs[$j][0],1,2 = valeur de chaque couleur de segment
         $coul = imageColorAllocate($img, $couleurs[$j][0], $couleurs[$j][1], $couleurs[$j][2]);
         $h = ($valeurs_segment[$i][$j]/$valeur_barre[$i])*100;
         $h = round(($max*$h)/100);  // hauteur de chaque segment
         $y2=$y1+$h;
         if ($y2>$max+$y_haut)
            $y2=$max+$y_haut;
         imagerectangle($img,$x1+$espace,$y1,$x2,$y2,$noir);
         //imageFilledRectangle($img,$x1+$espace,$y1,$x2,$y2,$coul);
         imageFilledRectangle($img,$x1+$espace+1,$y1+1,$x2-1,$y2-1,$coul);
         $y1=$y2;
        }
    }
$y=20;
$x=$x2+50;
$x_ecrit=$x2+70;
for ($i=0;$i<count($intitule);$i++) // chaque intitulé
    {
    $y=$y+imageFontHeight($police)+10;
    $coul = imageColorAllocate($img, $couleurs[$i][0], $couleurs[$i][1], $couleurs[$i][2]);
    imagerectangle($img,$x,$y,$x+imageFontHeight($police),$y+imageFontHeight($police),$noir);
    imageFilledRectangle($img,$x+1,$y+1,$x+imageFontHeight($police)-1,$y+imageFontHeight($police)-1,$coul);
    imagestring($img,$police,$x_ecrit,$y,$intitule[$i],$noir);
    }

imagePNG($img);
imageDestroy($img);  

?> 

Conclusion

En espérant que ce code puisse rendre service ...
 

Historique

18 octobre 2004 18:36:11 :
ajout d'une captue d'écran
19 octobre 2004 11:33:59 :
code un peu plus commenté ...

Commentaires et avis

signaler à un administrateur
Commentaire de yami le 18/10/2004 18:51:32

Super ...
J'ai mis 10

signaler à un administrateur
Commentaire de bzhatao56 le 19/10/2004 14:42:33

Bonne base pour débuter sans avoir à utiliser des librairies trop lourdes

signaler à un administrateur
Commentaire de neely le 25/01/2005 13:54:53

est ce que je peux l'utiliser pour gérer l'évolution d'un étudiant dans un établissement

signaler à un administrateur
Commentaire de jmeunier le 25/01/2005 18:29:17

c'est là pour être utilisé ...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,23 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.