Comment on cree des graphiques en PHP ? [PHP] - Programmation
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.
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
?>
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
?>
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
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...
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 ?
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!
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