|
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 !
HISTOGRAMME EMPILÉ 100 %
Information sur la source
Description
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é ...
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
|