1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
| <?php
////////////////////////////////////////////////////////////////:
//Préparation des données
//$mois=array('1','2','3','4','5','6','7','8','9', '10', '11', '12');
//$libelle_produit=array('Produit1','Produit1','Produit1','Produit1','Produit1','Produit1','Produit1','Produit1','Produit1','Produit1','Produit1','Produit1');
//$qtvendu=array('4000','6000','8000','4444','5555','3333','7777','6666','4567','5678','6789','5478');
//$moisFr=array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Decembre');
//$resultat=array();
//$row=array();
//$i=0;
/////////////////////////////////////////////:
// Préparation de l'image
/////////////////////////////////////////////
// Nous adaptons maintenant la largeur de l'image et l'échelle
//par rapport aux nombres de mois de vente de l'année et la
// quantité maximale et celle minimale,
//tracer les grilles
//et allouer les couleurs nécessaires dans le graphe.
///////////////////////////////////////////////
$i=4;
//Type mime de l'image
header('Content-type: image/png');
//Chemin vers le police à utiliser
//$font_file = './arial.ttf';
//Adapter la largeur de l'image avec le nombre de donnée
$bordX=25;
$bordY=25;
$largeur=$i*100;
$hauteur=$i*100;
$imageX=$largeur+(2*$bordX);
$imageY=$hauteur+(2*$bordY);
//Création de l'image
$courbe=imagecreatetruecolor($imageX, $imageY);
//Allouer les couleurs à utiliser
$bleu=imagecolorallocate($courbe, 0, 0, 255);
$ligne=imagecolorallocate($courbe, 220, 220, 220);
$fond=imagecolorallocate($courbe, 250, 250, 250);
$noir=imagecolorallocate($courbe, 0, 0, 0);
$rouge=imagecolorallocate($courbe, 255, 0, 0);
//Colorier le fond
imagefilledrectangle($courbe,0 , 0, $imageX, $imageY, $fond);
//Tracer l'axe des abscisses
imageline($courbe, $bordX, $imageY/2, $largeur+$bordX,$imageY/2, $noir);
//Tracer l'axe des ordonnées
imageline($courbe, $imageX/2, $bordY, $imageX/2, $imageY-$bordY, $noir);
//Nombres des grides verticales
$nbOrdonne=3;
$nbAbscisse=3;
//Calcul des ordonnees des grides
$pasY=$i/$nbOrdonne*100;
$pasX=$i/$nbAbscisse*100;
for($a=1;$a<$i+1;$a++){
//Affiche la valeur de l'absicsse
imagestring($courbe, 2, $bordX + ($a-1)*$pasX-5, ($hauteur-$bordY)/2+20, round($a,1), $noir);
//Trace la gride
imageline($courbe, $bordX + ($a-1)*$pasX, $largeur+$bordY, $bordX + ($a-1)*$pasX, $bordY, $ligne);
//Decaller vers le haut pour la prochaine gride
}
for($a=1;$a<$i+1;$a++){
//Affiche la valeur de l'ordonnee
imagestring($courbe, 2,($largeur-$bordX)/2+$bordY , $bordY + ($i-$a)*$pasY, round($a,1), $noir);
//Trace la gride
imageline($courbe, $bordX, $bordY+($a-1)*$pasY, $largeur+$bordX, $bordY+($a-1)*$pasY, $ligne);
//Decaller vers le haut pour la prochaine gride
}
//////////////////////////////////////////////
// TRACAGE DU DIAGRAMME
//Pour tracer un diagramme d'effectifs,
//nous calculons la position du point correspondant à la quantité vendue,
//dessiner un point rouge,
//tracer le segment vertical (bâton) proportionnel à l'abscisse du point rouge,
//écrire la quantité vendue en bleu et relier ensuite les points obtenus.
///////////////////////////////////////////////
// LES TABLEAUX
/////////////////////////////////////////////:
$importance=array('1','2','3','4','2','3','4','1','2'); //// en X
$note=array('1','2','3','4','1','2','3','4','3'); ///// en Y
$question=array('Q1','Q2','Q3','Q4','Q5','Q6','Q7','Q8','Q9');
/////////////////////////////////////////////
$i=4;
for($z=0;$z<9;$z++){ // 9 = nombre de resultats
// calcul la largeur du point par rapport à la valeur $importance
$x= $bordX + $pasX*($importance[$z]-1);
//calculer la hauteur du point par rapport à sa valeur satisfaction ($note)
$y= $bordY + ($i-$note[$z])*$pasY;
//$y=$bordY+3*$pasY;
//dessiner le point
imagefilledellipse($courbe, $x, $y, 6, 6, $rouge);
//Afficher la valeur au dessus du point //////////////// $question
imagestring($courbe, 2, $x+15,$y-15 , $question[$z], $bleu);
}
//Envoyer le flux de l'image
imagepng($courbe);
//Desallouer le memoire utiliser par l'image
imagedestroy($courbe);
?> |
Partager