[PHP]Comment on cree des graphiques en PHP ?

Comment on cree des graphiques en PHP ? [PHP] - Programmation

Marsh Posté le 13-08-2001 à 08:57:48    

Pour creer par exemple un histogramme a partir de donnees sql ?


---------------
All we need is a soul revolution
Reply

Marsh Posté le 13-08-2001 à 08:57:48   

Reply

Marsh Posté le 13-08-2001 à 10:17:09    

tu fais ta requete, tu la fetch, t'as un compteur incrémental du style count=0;, count++
 
imageRectangle($img_res,$largeur_image/$count,$req
uete_value,$largeur_image/$nb_rangs,0,$color1);
 
un truc ds ce genre...
 
reply si plus de prec.

Reply

Marsh Posté le 13-08-2001 à 10:20:20    

Tu peux dessiner en php mais faut  dessiner droite par droite ou figure par figure donc pour un histogramme, les axes, les rectangles qui ont pour hauteur la donnée SQL.
 
Voilà un exemple:
<?
 Header("Content-type: image/png" );
 $x=400; //taille de l'image
 $y=300;
 $data=array (3, 1, 7, 2, 5, 4, 6); //données
 $im = imagecreate($x,$y);  //crée l'image en mémoire
 $black = ImageColorAllocate($im, 0,0,0);  //définit les couleurs
 $blue = ImageColorAllocate($im, 0,36,135);
 $white = ImageColorAllocate($im, 255,255,255);
 ImageFilledRectangle($im,0,0,$x,$y,$white); //remplir l'image en blanc
 
 //dessine les axes
 imageline($im,0,50,$x,50,$black);
 imageline($im,$x-50,0,$x-50,$y,$black);
 //pour chaque donnée tu tableau, dessine un rectangle plein dont la hauteur est la valeur de la donnée du tableau
 for($i=0;$i<sizeof($data);$i++)
 {
         ImageFilledRectangle($im,$i*50+15,51,$i*50+40,51+$data[$i]*30,$blue);
 }
 Imagepng($im);  //envoi l'image en mémoire au navigateur
?>

Reply

Marsh Posté le 13-08-2001 à 10:20:36    

Tu peux dessiner en php mais faut  dessiner droite par droite ou figure par figure donc pour un histogramme, les axes, les rectangles qui ont pour hauteur la donnée SQL.
 
Voilà un exemple:
<?
 Header("Content-type: image/png" );
 $x=400; //taille de l'image
 $y=300;
 $data=array (3, 1, 7, 2, 5, 4, 6); //données
 $im = imagecreate($x,$y);  //crée l'image en mémoire
 $black = ImageColorAllocate($im, 0,0,0);  //définit les couleurs
 $blue = ImageColorAllocate($im, 0,36,135);
 $white = ImageColorAllocate($im, 255,255,255);
 ImageFilledRectangle($im,0,0,$x,$y,$white); //remplir l'image en blanc
 
 //dessine les axes
 imageline($im,0,50,$x,50,$black);
 imageline($im,$x-50,0,$x-50,$y,$black);
 //pour chaque donnée tu tableau, dessine un rectangle plein dont la hauteur est la valeur de la donnée du tableau
 for($i=0;$i<sizeof($data);$i++)
 {
         ImageFilledRectangle($im,$i*50+15,51,$i*50+40,51+$data[$i]*30,$blue);
 }
 Imagepng($im);  //envoi l'image en mémoire au navigateur
?>

Reply

Marsh Posté le 13-08-2001 à 10:33:49    

ma fois c plus complet, mais le povre risque d'en crever :)

Reply

Marsh Posté le 13-08-2001 à 10:44:24    

Il peut demander des explications, le forum est là pour ça!
C'est avec cet exemple que j'ai commencé avec la librairie GD :)

Reply

Marsh Posté le 13-08-2001 à 10:50:37    

shinji a écrit a écrit :

Il peut demander des explications, le forum est là pour ça!
C'est avec cet exemple que j'ai commencé avec la librairie GD :)  




Ok merci effectivement la réponse est complete et c'est tant mieux, je vais eplucher ca...


---------------
All we need is a soul revolution
Reply

Marsh Posté le 14-08-2001 à 10:15:16    

shinji a écrit a écrit :

Il peut demander des explications, le forum est là pour ça!
C'est avec cet exemple que j'ai commencé avec la librairie GD :)  




Ok j'ai fait tourner ton script, je ne comprends pas une chose : on a des valeurs positives dans le tableau alors que les valeurs sont tracés sur les axes -x et -y ???
 
Sinon pourrais tu me donner des precisions sur la ligne : ImageFilledRectangle($im,$i*50+15,51,$i*50+40,51+$data[$i]*30,$blue);
a quoi ca sert le *50+15 ? le 51 ?
 
 :jap:  
 :hello:


---------------
All we need is a soul revolution
Reply

Marsh Posté le 14-08-2001 à 10:45:31    

Il faut savoir que l'origine d'une image est le coin supérieur gauche de l'écran:
 0                      
0----------------------x
 |
 |  
 |
 |
 |
 y
Maitenant tu devrais mieux comprendre. Sinon le 51 c'est par rapport à son l'axe(0,50)(400,50)(Pour commencer au niveau de l'axe)
Le 15, c'est l'écart entre chaque rectangle, bref maintenant que tu sais où se situe l'origine, dessine le manuellement, tu comprendra mieux!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed