|
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 !
DES GRAPHIQUES PARAMÉTRABLES
Information sur la source
Description
pour faire des p'tits graphiques avec des belles barres.
pour appeler le graphique, on fait :
<img src=graph.php>
la page graph.php contient ...
Source
- <?
- // Les valeurs en abscisse (attention, incrémentez les valeurs de 1 en 1, ne passez pas de 4 à 6 par exemple, et commencez par 0)
-
- $x[0] = "lun";
- $x[1] = "mar";
- $x[2] = "mer";
- $x[3] = "jeu";
- $x[4] = "ven";
- $x[5] = "sam";
- $x[6] = "dim";
-
- // ou $x = array("lun","mar","mer","jeu","ven","sam","dim");
-
- // Les valeurs en ordonnée (attention, incrémentez les valeurs de 1 en 1, ne passez pas de 4 à 6 par exemple, et commencez par 0)
-
- $y[0] = 12;
- $y[1] = 5;
- $y[2] = 21;
- $y[3] = 7;
- $y[4] = 2;
- $y[5] = 15;
- $y[6] = 18;
-
- // ou $y = array(12, 5, 21, 7, 2, 15, 18);
-
- // Espace entre les barres
- $barres_espace = 16;
-
- // Largeur des barres
- $barres_largeur = 8;
-
- // Hauteur de la barre la plus grande
- $barres_hauteur = 75;
-
- // Afficher la ligne de moyenne
- $afficher_moyenne = 1;
-
- // Afficher les lignes de niveau
- $afficher_lignes = 0;
-
- // Intensité du dégradé de couleurs (entre 0 et 100, 100 = intensité maximale, 0 = intensité minimale)
- $dégradé_intensité = 100;
-
-
- /*
-
- Zone de création de l'image, vous y faîtes ce que vous voulez...
- Vous pouvez par exemple modifier les couleurs, etc.
- À vos risques et périls (si vous êtes débutant en PHP)...
-
- */
-
-
- function blanc($valeur,$taille) {
-
- for($i = 1; $i < $taille; $i++) {
- if($valeur < pow(10,$i)) {
- $ligne .= " ";
- }
- }
-
- return $ligne;
- }
-
- $nombre = count($y);
- $somme = array_sum($y);
- $moyenne = $somme/$nombre;
- $maximum = max($y);
- $minimum = min($y);
- $taille = strlen($maximum);
-
- $largeur = 30+$taille*6+$barres_largeur*$nombre+$barres_espace*($nombre-0.5);
- $hauteur = $barres_hauteur+32;
-
- $image = imagecreate($largeur,$hauteur);
-
- $blanc = imagecolorallocate($image,255,255,255);
- $noir = imagecolorallocate($image,0,0,0);
-
- $couleur_niveau = imagecolorallocate($image,220,200,220);
- $couleur_moyenne = imagecolorallocate($image,180,180,220);
-
- imagefilledrectangle($image,0,0,$largeur,$hauteur,$blanc);
- imagecolortransparent($image,$blanc);
-
- if($dégradé_intensité > 100) {
- $dégradé_intensité = 100;
- }
-
- $abscisse = $taille*5+20;
- $dégradé = round($dégradé_intensité/$nombre);
-
-
- $couleur = 150;
-
- for($i = 0; $i < $nombre; $i++) {
-
- unset($ordonnée);
-
- if($maximum) {
- $ordonnée = $barres_hauteur+8-$y[$i]/$maximum*$barres_hauteur;
- }
-
- if(!$ordonnée) {
- $ordonnée = $barres_hauteur+8;
- }
-
- if($i <= $nombre/2) {
- $couleur -= $dégradé;
- } else {
- $couleur += $dégradé;
- }
-
-
- $barres = imagecolorallocate($image,0,0,$couleur);
- $ombre = imagecolorallocate($image,floor(140+$couleur/2),floor(140+$couleur/2),floor(150+$couleur/2));
-
- imagesetpixel($image,$abscisse+2,$ordonnée-2,$ombre);
- imagesetpixel($image,$abscisse+2,$ordonnée-1,$ombre);
- imagesetpixel($image,$abscisse+1,$ordonnée-1,$ombre);
-
- imagesetpixel($image,$abscisse+$barres_largeur+2,$barres_hauteur+6,$ombre);
- imagesetpixel($image,$abscisse+$barres_largeur+1,$barres_hauteur+6,$ombre);
- imagesetpixel($image,$abscisse+$barres_largeur+1,$barres_hauteur+7,$ombre);
-
- imagefilledrectangle($image,$abscisse+3,$ordonnée-3,$abscisse+$barres_largeur+3,$barres_hauteur+5,$ombre);
- imagefilledrectangle($image,$abscisse,$ordonnée,$abscisse+$barres_largeur,$barres_hauteur+8,$barres);
-
- imagestring($image,2,$abscisse+$barres_largeur/2-strlen($x[$i])*2.5+1,$barres_hauteur+15,$x[$i],$noir);
-
- $abscisse += $barres_largeur+$barres_espace;
- }
-
- if($maximum) {
-
- imagestring($image,2,8,0,blanc($maximum,$taille).$maximum,$noir);
-
- if($maximum > 1) {
-
- if(round($maximum/2) > $maximum/2) {
- $valeur = floor($maximum/2);
- } else {
- $valeur = ceil($maximum/2);
- }
-
- imagestring($image,2,8,round($maximum/2)/$maximum*$barres_hauteur+1,blanc($valeur,$taille).$valeur,$noir);
-
- }
-
- if($maximum > 2) {
-
- if(round(3*$maximum/4) > 3*$maximum/4) {
- $valeur = floor($maximum/4);
- } else {
- $valeur = ceil($maximum/4);
- }
-
- imagestring($image,2,8,round(3*$maximum/4)/$maximum*$barres_hauteur+1,blanc($valeur,$taille).$valeur,$noir);
-
- if(round($maximum/4) > $maximum/4) {
- $valeur = floor(3*$maximum/4);
- } else {
- $valeur = ceil(3*$maximum/4);
- }
-
- imagestring($image,2,8,round($maximum/4)/$maximum*$barres_hauteur+1,blanc($valeur,$taille).$valeur,$noir);
-
- }
-
- $début = $taille*5+20;
- $fin = $taille*5+$barres_largeur*$nombre+$barres_espace*$nombre-$barres_espace+20;
-
- if($afficher_lignes) {
-
-
- if($maximum > 1) {
- $ordonnée = round(round($maximum/2)/$maximum*$barres_hauteur+7);
- imageline($image,$début,$ordonnée,$fin,$ordonnée,$couleur_niveau);
- }
-
- if($maximum > 2) {
- $ordonnée = round(round(3*$maximum/4)/$maximum*$barres_hauteur+7);
- imageline($image,$début,$ordonnée,$fin,$ordonnée,$couleur_niveau);
-
- $ordonnée = round(round($maximum/4)/$maximum*$barres_hauteur+7);
- imageline($image,$début,$ordonnée,$fin,$ordonnée,$couleur_niveau);
- }
-
- }
-
- if($afficher_moyenne) {
- $ordonnée = round($barres_hauteur-$moyenne/$maximum*$barres_hauteur+7);
- imageline($image,$début,$ordonnée,$fin,$ordonnée,$couleur_moyenne);
- }
-
- }
-
- imagestring($image,2,8,$barres_hauteur+1,blanc(0,$taille)."0",$noir);
-
-
- imagepng($image);
-
- imagedestroy($image);
-
-
- header("Content-type: image/png");
-
- ?>
<?
// Les valeurs en abscisse (attention, incrémentez les valeurs de 1 en 1, ne passez pas de 4 à 6 par exemple, et commencez par 0)
$x[0] = "lun";
$x[1] = "mar";
$x[2] = "mer";
$x[3] = "jeu";
$x[4] = "ven";
$x[5] = "sam";
$x[6] = "dim";
// ou $x = array("lun","mar","mer","jeu","ven","sam","dim");
// Les valeurs en ordonnée (attention, incrémentez les valeurs de 1 en 1, ne passez pas de 4 à 6 par exemple, et commencez par 0)
$y[0] = 12;
$y[1] = 5;
$y[2] = 21;
$y[3] = 7;
$y[4] = 2;
$y[5] = 15;
$y[6] = 18;
// ou $y = array(12, 5, 21, 7, 2, 15, 18);
// Espace entre les barres
$barres_espace = 16;
// Largeur des barres
$barres_largeur = 8;
// Hauteur de la barre la plus grande
$barres_hauteur = 75;
// Afficher la ligne de moyenne
$afficher_moyenne = 1;
// Afficher les lignes de niveau
$afficher_lignes = 0;
// Intensité du dégradé de couleurs (entre 0 et 100, 100 = intensité maximale, 0 = intensité minimale)
$dégradé_intensité = 100;
/*
Zone de création de l'image, vous y faîtes ce que vous voulez...
Vous pouvez par exemple modifier les couleurs, etc.
À vos risques et périls (si vous êtes débutant en PHP)...
*/
function blanc($valeur,$taille) {
for($i = 1; $i < $taille; $i++) {
if($valeur < pow(10,$i)) {
$ligne .= " ";
}
}
return $ligne;
}
$nombre = count($y);
$somme = array_sum($y);
$moyenne = $somme/$nombre;
$maximum = max($y);
$minimum = min($y);
$taille = strlen($maximum);
$largeur = 30+$taille*6+$barres_largeur*$nombre+$barres_espace*($nombre-0.5);
$hauteur = $barres_hauteur+32;
$image = imagecreate($largeur,$hauteur);
$blanc = imagecolorallocate($image,255,255,255);
$noir = imagecolorallocate($image,0,0,0);
$couleur_niveau = imagecolorallocate($image,220,200,220);
$couleur_moyenne = imagecolorallocate($image,180,180,220);
imagefilledrectangle($image,0,0,$largeur,$hauteur,$blanc);
imagecolortransparent($image,$blanc);
if($dégradé_intensité > 100) {
$dégradé_intensité = 100;
}
$abscisse = $taille*5+20;
$dégradé = round($dégradé_intensité/$nombre);
$couleur = 150;
for($i = 0; $i < $nombre; $i++) {
unset($ordonnée);
if($maximum) {
$ordonnée = $barres_hauteur+8-$y[$i]/$maximum*$barres_hauteur;
}
if(!$ordonnée) {
$ordonnée = $barres_hauteur+8;
}
if($i <= $nombre/2) {
$couleur -= $dégradé;
} else {
$couleur += $dégradé;
}
$barres = imagecolorallocate($image,0,0,$couleur);
$ombre = imagecolorallocate($image,floor(140+$couleur/2),floor(140+$couleur/2),floor(150+$couleur/2));
imagesetpixel($image,$abscisse+2,$ordonnée-2,$ombre);
imagesetpixel($image,$abscisse+2,$ordonnée-1,$ombre);
imagesetpixel($image,$abscisse+1,$ordonnée-1,$ombre);
imagesetpixel($image,$abscisse+$barres_largeur+2,$barres_hauteur+6,$ombre);
imagesetpixel($image,$abscisse+$barres_largeur+1,$barres_hauteur+6,$ombre);
imagesetpixel($image,$abscisse+$barres_largeur+1,$barres_hauteur+7,$ombre);
imagefilledrectangle($image,$abscisse+3,$ordonnée-3,$abscisse+$barres_largeur+3,$barres_hauteur+5,$ombre);
imagefilledrectangle($image,$abscisse,$ordonnée,$abscisse+$barres_largeur,$barres_hauteur+8,$barres);
imagestring($image,2,$abscisse+$barres_largeur/2-strlen($x[$i])*2.5+1,$barres_hauteur+15,$x[$i],$noir);
$abscisse += $barres_largeur+$barres_espace;
}
if($maximum) {
imagestring($image,2,8,0,blanc($maximum,$taille).$maximum,$noir);
if($maximum > 1) {
if(round($maximum/2) > $maximum/2) {
$valeur = floor($maximum/2);
} else {
$valeur = ceil($maximum/2);
}
imagestring($image,2,8,round($maximum/2)/$maximum*$barres_hauteur+1,blanc($valeur,$taille).$valeur,$noir);
}
if($maximum > 2) {
if(round(3*$maximum/4) > 3*$maximum/4) {
$valeur = floor($maximum/4);
} else {
$valeur = ceil($maximum/4);
}
imagestring($image,2,8,round(3*$maximum/4)/$maximum*$barres_hauteur+1,blanc($valeur,$taille).$valeur,$noir);
if(round($maximum/4) > $maximum/4) {
$valeur = floor(3*$maximum/4);
} else {
$valeur = ceil(3*$maximum/4);
}
imagestring($image,2,8,round($maximum/4)/$maximum*$barres_hauteur+1,blanc($valeur,$taille).$valeur,$noir);
}
$début = $taille*5+20;
$fin = $taille*5+$barres_largeur*$nombre+$barres_espace*$nombre-$barres_espace+20;
if($afficher_lignes) {
if($maximum > 1) {
$ordonnée = round(round($maximum/2)/$maximum*$barres_hauteur+7);
imageline($image,$début,$ordonnée,$fin,$ordonnée,$couleur_niveau);
}
if($maximum > 2) {
$ordonnée = round(round(3*$maximum/4)/$maximum*$barres_hauteur+7);
imageline($image,$début,$ordonnée,$fin,$ordonnée,$couleur_niveau);
$ordonnée = round(round($maximum/4)/$maximum*$barres_hauteur+7);
imageline($image,$début,$ordonnée,$fin,$ordonnée,$couleur_niveau);
}
}
if($afficher_moyenne) {
$ordonnée = round($barres_hauteur-$moyenne/$maximum*$barres_hauteur+7);
imageline($image,$début,$ordonnée,$fin,$ordonnée,$couleur_moyenne);
}
}
imagestring($image,2,8,$barres_hauteur+1,blanc(0,$taille)."0",$noir);
imagepng($image);
imagedestroy($image);
header("Content-type: image/png");
?>
Conclusion
avec une petite image fournie pour montrer ce que ça donne
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Comparez les prix Nouvelle version
|