begin process at 2012 02 15 23:49:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > DES HISTOGRAMES , CAMEMBERT 3D ET ÉCLATÉS CRÉÉ AU VOL EN PHP

DES HISTOGRAMES , CAMEMBERT 3D ET ÉCLATÉS CRÉÉ AU VOL EN PHP


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :histogramme, camembert, 3D, au vol, creation graphique Niveau :Initié Date de création :10/03/2010 Vu :5 155

Auteur : zozo14

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
// peut être appelée dans votre code pour créer au vol un graphique (histogramme 2 ou 3D , camembert 2 ou 3d)
//exemple => <img src="cree_graphique.php?titre=Titre du graphique&n=1&noms=categorie1;categorie2;categorie 3&valeurs=1234,500,734&pertinences=0,3,5&saisies=s aisie1;saisie2&la=700&ha=120&type=4&auvol=1" />';
// ou comme une procédure incluse  pour creer un fichier image graphq.gif dans le dossier images/ du repertoire courant de cree_graphique.php
// à inclure dans votre code php par include_once('cree_graphique.php');//include_path inutile car dans dossier courant
//exemple => if (cree_graphique($titre,$q,etc...,false)) print <img src="graph$q.gif">;

Source

  • <?php
  • // peut être appelée dans votre code pour créer au vol un graphique (histogramme 2 ou 3D , camembert 2 ou 3d)
  • //exemple => <img src="cree_graphique.php?titre=Titre du graphique&n=1&noms=categorie1;categorie2;categorie3&valeurs=1234,500,734&pertinences=0,3,5&saisies=saisie1;saisie2&la=700&ha=120&type=4&auvol=1" />';
  • // ou comme une procédure incluse pour creer un fichier image graphq.gif dans le dossier images/ du repertoire courant de cree_graphique.php
  • // à inclure dans votre code php par include_once('cree_graphique.php');//include_path inutile car dans dossier courant
  • //exemple => if (cree_graphique($titre,$q,etc...,false)) print <img src="graph$q.gif">;
  • //.................................... début de l'exécution
  • if (isset($_GET['auvol'])) //renvoyer l'image au vol
  • {
  • header("Content-type: image/gif");
  • $im=cree_graphique($_GET['titre'],$_GET['n'],$_GET['noms'],$_GET['valeurs'],$_GET['pertinences'],$_GET['saisies'],strval($_GET['la']),strval($_GET['ha']),strval($_GET['type']),true);
  • imagegif($im); //fabrication et renvoi
  • imagedestroy($im);//libération mémoire
  • }// sinon la procedure incluse ci-dessous est appelée directement par le code
  • //......................................fin du l'exécution
  • //******************** FONCTION de fabrication du graphique
  • function cree_graphique($titre,$q,$noms,$val,$pertinence,$saisies,$la,$ha,$type,$auvol) //le grahique ne tient pas compte des pondérations, donne simplement la proportion
  • {
  • //prevenir erreur si $type=0 (aucun graphique)
  • if ($type==0) $type=4; //sinon 1 - barres 2D , 2 - barres 3D , 3 - camembert 2D, 4 - camembert 3D
  • //affichage ou non du degré de pertinece des réponses
  • $aff_pertinence=($pertinence!='');
  • //Il y a des saisies utilisateurs autres que les catagories noms, à représenter dans le graphique
  • $saisie=($saisies!='');
  • // créer l'image sur fond gris
  • $im = imagecreate($la, $ha);
  • imagefilledrectangle($im, 0,0, $la, $ha,imagecolorallocate($im,153,153,153));
  • //encadrer en noir
  • imagerectangle($im, 0,0, $la-1, $ha-1,imagecolorallocate($im,0,0,0));
  • //titre du graphique en blanc
  • imagestring($im, 3, 10,2,$titre,imagecolorallocate($im,255,255,255));
  • //choix de la couleur de base à nuancer
  • switch ($q%6)
  • {
  • case 0 : $c="vert";break ;
  • case 1 : $c="cyan";break ;
  • case 2 : $c="magenta";break;
  • case 3 : $c="rouge";break ;
  • case 4 : $c="bleu";break ;
  • case 5 : $c="jaune";break ;
  • }
  • //mettre en tableau les valeurs envoyées, en allongeant de 1 pour prévoir les saisies
  • $t=split(';',$noms);
  • $max=count($t); // max+1 valeurs , pour prévoir les saisies
  • $v=array($max); //valeurs en pourcentage
  • $nom=split(';',$noms);array_push($nom,'');
  • $v0=split(';',$val);array_push($v0,0);
  • $p0=split(';',$pertinence);array_push($p0,0);
  • $co=array($max);
  • if ($saisie)
  • {
  • $nom[$max]="Autres saisies ... ";
  • $mul=10;
  • if ($aff_pertinence) $p0[$max]=10;
  • $z=split(';',$saisies);
  • $v0[$max]=count($z)*$mul; //nb de saisies multipliées par 10 pour les voir...
  • }
  • else $max=$max-1;
  • //calcul des pourcentages
  • $s=0;
  • for ($i=0;$i<=$max;$i++) $s+=$v0[$i];
  • if ($s==0) $s=100; //prevenir somme nulle
  • for ($i=0;$i<=$max;$i++) $v[$i]=100*$v0[$i]/$s;
  • //aspect du graphique
  • $e=40; //épaisseur pour la 3D
  • $cx=2*$la/3 ;$cy=$ha/2+$e/2+4; // centre du camembert
  • if ($type==4) {$lac=$la/2.5;$hac=$ha/2.5;$angle0=0;} else {$lac=$la/2;$hac=$ha/2;$angle0=0;} //grand axe/petit axe - angle0 fait tourner le camembert dans son plan...
  • // decalage vertical de la legende
  • $dh=$ha/(2+$max);
  • if ($type<3) // *********************************** barres horizontales 2 ou 3D
  • {
  • //rechercher maxi du pourcentage
  • $maxi=0;for ($i=0;$i<=$max;$i++) {if ($v[$i]>$maxi) {$maxi=$v[$i];$j=$i;$ech=100/$v[$i];}}
  • //le prendre (j) comme référence à 100% et recalculer v(i)
  • for ($i=0;$i<=$max;$i++) {if ($i==$j) $v[$i]=2*$la/3-40; else $v[$i]=$ech*$v[$i]*(2*$la/3-40)/100;}
  • //legende + barres 2D
  • for ($i=0;$i<=$max;$i++)
  • {
  • if ($aff_pertinence) $s='('.$p0[$i].') '; else $s='';
  • imagestring($im, 2, 40,$dh+ $i*$dh, $s.formate($nom[$i],35).$v0[$i],couleur($im,'noir',0,10));//legende
  • if ($type==1) $co[$i]=couleur($im,$c,$i-1,$max); else $co[$i]=couleur($im,$c,$i,$max); //plus clair en 3D
  • imagefilledrectangle($im, 10,$dh+ $i*$dh, 30,$dh +15 + $i*$dh,$co[$i]);
  • if ($type==1) $d=0; else $d=6; //ajustage pour 3D [$i]=couleur($im,$c,$i-1,$max); else $co[$i]=couleur($im,$c,$i,$max); //plus clair en 3D
  • imagefilledrectangle($im, $la/3 +30 - $d, $dh + $d + $i*$dh, $la/3 + 30 - $d + $v[$i],$dh + 15 + $i*$dh,$co[$i]); // face avant - barres 2D
  • }
  • if ($type==2) // si barres 3D
  • for ($f=0;$f<7;$f++) // mise en relief par glissments et nuances
  • {
  • for ($i=0;$i<=$max;$i++)
  • {
  • $co[$i]=couleur($im,$c,$i-0.5,$max); //extrémité droite
  • imagefilledrectangle($im,$la/3 + 30 -$f + $v[$i],$dh + $i*$dh+$f, $la/3 + 30 -$f+1 + $v[$i],$dh + 8+$f + $i*$dh,$co[$i]);
  • $co[$i]=couleur($im,$c,$i-0.8,$max);//face supérieure
  • imagefilledrectangle($im, $la/3 -$f + 30,$dh + $f+ $i*$dh, $la/3 + 30 -$f + $v[$i],$f+1 + $dh + $i*$dh,$co[$i]);
  • }
  • }
  • }
  • else // **************************************** représentations circulaires : camembert 2D ou 3D
  • {
  • //bloc couleur + légende
  • for ($i=0;$i<=$max;$i++)
  • {
  • $co[$i]=couleur($im,$c,$i-1,$max);
  • imagefilledrectangle($im, 10,$dh+ $i*$dh, 30,$dh +15 + $i*$dh,$co[$i]);
  • $co[$i]=couleur($im,$c,$i-0.5,$max);//couleurs un peu plus sombre pour les tranches...0.5 pour ne pas les confondre avec le dessus
  • if ($aff_pertinence) $s='('.$p0[$i].') '; else $s='';
  • imagestring($im, 2, 40, $dh + $i*$dh, $s.formate($nom[$i],35).$v0[$i].' ('.number_format($v[$i],1,'.',' ').'%)',couleur($im,'noir',0,10));// 26 premiers caractères
  • }
  • //camembert
  • $deb=$angle0;
  • //epaisseur en faisant glisser vers le haut les ellipses sectorisées vides
  • for ($f=0;$f<$e;$f++)
  • {
  • for ($i=0;$i<=$max;$i++)
  • {
  • $fin=$deb+$v[$i]*3.6;
  • $x=$cx;$y=$cy;
  • if ($type==4) {$x=$cx+$lac/10*cos(($fin+$deb)/2*pi()/180);$y=$cy+$hac/10*sin(($fin+$deb)/2*pi()/180);}
  • if ($type==4) imagefilledarc($im ,$x , $y -$f, $lac ,$hac , $deb, $fin ,$co[$i],IMG_ARC_PIE); else imagefilledarc($im ,$x , $y -$f, $lac ,$hac , $deb, $fin ,$co[$i],IMG_ARC_NOFILL ); // si type 2D inutile de remplir
  • $deb=$fin;
  • }
  • }
  • $deb=$angle0;
  • // finir par le dessus plus clair, avec des étisuettes en blanc
  • for ($i=0;$i<=$max;$i++)
  • {
  • $co[$i]=couleur($im,$c,$i-1,$max);
  • $fin=$deb+$v[$i]*3.6;
  • $x=$cx;$y=$cy;
  • if ($type==4) {$x=$cx+$lac/10*cos(($fin+$deb)/2*pi()/180);$y=$cy+$hac/10*sin(($fin+$deb)/2*pi()/180);}
  • imagefilledarc($im ,$x , $y -$e, $lac ,$hac , $deb, $fin ,$co[$i],IMG_ARC_PIE);//avec remplissage
  • //etiquettes % avec couleurs légende
  • $co[$i]=couleur($im,'blanc',0,10);
  • $x=$cx+$lac/2*cos(($fin+$deb)/2*pi()/180);
  • $y=$cy-10+$hac/2*sin(($fin+$deb)/2*pi()/180);
  • imagestring($im, 3, $x,$y-$e, number_format($v[$i],1,'.',' ').'%',$co[$i]);
  • $deb=$fin;
  • }
  • }
  • if ($auvol) return $im; // retourner le handle de l'image
  • else //sinon créer le fichier image dans le dossier images/
  • {
  • imagegif($im,'images/graph'.$q.'.gif');
  • imagedestroy($im);//libération mémoire
  • return true;
  • }
  • }
  • //couleurs et dégradés $d niveau du dégradé - $e niveau de degradation maxi
  • function couleur($im,$co,$d,$nb)
  • {
  • $e=255/($nb+1);
  • $comp=255-$e*($d+1);
  • if ($comp<0) $comp=0;
  • if ($comp>255) $comp=255;
  • $co=strtoupper($co);
  • if ($co=="NOIR") return imagecolorallocate($im,0,0,0);
  • else if ($co=="BLANC") return imagecolorallocate($im,$comp,$comp,$comp);
  • else if ($co=="JAUNE")return imagecolorallocate($im,$comp,$comp,0);
  • else if ($co=="CYAN") return imagecolorallocate($im,0,$comp,$comp);
  • else if ($co=="MAGENTA") return imagecolorallocate($im,$comp,0,$comp);
  • else if ($co=="ROUGE") return imagecolorallocate($im,$comp,0,0);
  • else if ($co=="VERT") return imagecolorallocate($im,0,$comp,0);
  • else if ($co=="BLEU") return imagecolorallocate($im,0,0,$comp);
  • else return imagecolorallocate($im,0,0,0);
  • }
  • function formate($s,$nb)
  • {
  • $s.='..........................................';
  • return substr($s,0,$nb).'... : ';
  • }
  • ?>
<?php
// peut être appelée dans votre code pour créer au vol un graphique (histogramme 2 ou 3D , camembert 2 ou 3d)
//exemple => <img src="cree_graphique.php?titre=Titre du graphique&n=1&noms=categorie1;categorie2;categorie3&valeurs=1234,500,734&pertinences=0,3,5&saisies=saisie1;saisie2&la=700&ha=120&type=4&auvol=1" />'; 
// ou comme une procédure incluse  pour creer un fichier image graphq.gif dans le dossier images/ du repertoire courant de cree_graphique.php
// à inclure dans votre code php par include_once('cree_graphique.php');//include_path inutile car dans dossier courant 
//exemple => if (cree_graphique($titre,$q,etc...,false)) print <img src="graph$q.gif">;
 
//.................................... début de l'exécution

if (isset($_GET['auvol'])) //renvoyer l'image au vol
{
header("Content-type: image/gif");
$im=cree_graphique($_GET['titre'],$_GET['n'],$_GET['noms'],$_GET['valeurs'],$_GET['pertinences'],$_GET['saisies'],strval($_GET['la']),strval($_GET['ha']),strval($_GET['type']),true);
imagegif($im); //fabrication et renvoi
imagedestroy($im);//libération mémoire
}// sinon la procedure incluse ci-dessous  est appelée directement par le code

//......................................fin du l'exécution

//******************** FONCTION de fabrication du graphique

function cree_graphique($titre,$q,$noms,$val,$pertinence,$saisies,$la,$ha,$type,$auvol)  //le grahique ne tient pas compte des pondérations, donne simplement la proportion
{
//prevenir erreur si $type=0 (aucun graphique)
if ($type==0) $type=4;  //sinon 1 - barres 2D , 2 - barres 3D , 3 - camembert 2D, 4 - camembert 3D
//affichage ou non du degré de pertinece des réponses
$aff_pertinence=($pertinence!='');
//Il y a des saisies utilisateurs autres que les catagories noms, à représenter dans le graphique
$saisie=($saisies!='');
// créer l'image sur fond gris
$im = imagecreate($la, $ha); 
imagefilledrectangle($im, 0,0, $la, $ha,imagecolorallocate($im,153,153,153));
//encadrer en noir
imagerectangle($im, 0,0, $la-1, $ha-1,imagecolorallocate($im,0,0,0));
//titre du graphique en blanc
imagestring($im, 3, 10,2,$titre,imagecolorallocate($im,255,255,255));

//choix de la couleur de base à nuancer
switch ($q%6)
{
case 0 : $c="vert";break ;
case 1 : $c="cyan";break ;
case 2 : $c="magenta";break;
case 3 : $c="rouge";break ;
case 4 : $c="bleu";break ;
case 5 : $c="jaune";break ;
}
//mettre en tableau les valeurs envoyées, en allongeant de 1 pour prévoir les saisies 
$t=split(';',$noms); 
$max=count($t); // max+1 valeurs , pour prévoir les saisies
$v=array($max); //valeurs en pourcentage
$nom=split(';',$noms);array_push($nom,'');
$v0=split(';',$val);array_push($v0,0);
$p0=split(';',$pertinence);array_push($p0,0);
$co=array($max);
if ($saisie)
{
$nom[$max]="Autres saisies ... ";
$mul=10;
if ($aff_pertinence) $p0[$max]=10;
$z=split(';',$saisies);
$v0[$max]=count($z)*$mul; //nb de saisies multipliées par 10 pour les voir...
}
else $max=$max-1;
//calcul des pourcentages
$s=0;
for ($i=0;$i<=$max;$i++) $s+=$v0[$i];
if ($s==0) $s=100; //prevenir somme nulle
for ($i=0;$i<=$max;$i++) $v[$i]=100*$v0[$i]/$s;
//aspect du graphique
$e=40; //épaisseur pour la 3D
$cx=2*$la/3 ;$cy=$ha/2+$e/2+4; // centre du camembert
if ($type==4) {$lac=$la/2.5;$hac=$ha/2.5;$angle0=0;} else {$lac=$la/2;$hac=$ha/2;$angle0=0;}  //grand axe/petit axe - angle0 fait tourner le camembert dans son plan...
// decalage vertical de la legende
$dh=$ha/(2+$max);

if ($type<3) // ***********************************  barres horizontales 2 ou 3D
{
//rechercher maxi du pourcentage
$maxi=0;for ($i=0;$i<=$max;$i++) {if ($v[$i]>$maxi) {$maxi=$v[$i];$j=$i;$ech=100/$v[$i];}}
//le prendre (j) comme référence à 100% et recalculer v(i)
for ($i=0;$i<=$max;$i++) {if ($i==$j) $v[$i]=2*$la/3-40; else $v[$i]=$ech*$v[$i]*(2*$la/3-40)/100;}

//legende + barres 2D

for ($i=0;$i<=$max;$i++)
{
if ($aff_pertinence) $s='('.$p0[$i].') '; else $s='';
imagestring($im, 2, 40,$dh+ $i*$dh, $s.formate($nom[$i],35).$v0[$i],couleur($im,'noir',0,10));//legende
if ($type==1) $co[$i]=couleur($im,$c,$i-1,$max); else $co[$i]=couleur($im,$c,$i,$max); //plus clair en 3D
imagefilledrectangle($im, 10,$dh+  $i*$dh, 30,$dh +15 + $i*$dh,$co[$i]);
if ($type==1) $d=0; else $d=6; //ajustage pour 3D  [$i]=couleur($im,$c,$i-1,$max); else $co[$i]=couleur($im,$c,$i,$max); //plus clair en 3D
imagefilledrectangle($im, $la/3 +30 - $d, $dh + $d + $i*$dh, $la/3 + 30 - $d + $v[$i],$dh + 15 + $i*$dh,$co[$i]); // face avant - barres 2D
}

if ($type==2) // si barres 3D 
for ($f=0;$f<7;$f++) // mise en relief par glissments et nuances
{
for ($i=0;$i<=$max;$i++) 
{
$co[$i]=couleur($im,$c,$i-0.5,$max); //extrémité droite
imagefilledrectangle($im,$la/3 + 30 -$f + $v[$i],$dh + $i*$dh+$f, $la/3 + 30 -$f+1 + $v[$i],$dh + 8+$f + $i*$dh,$co[$i]); 
$co[$i]=couleur($im,$c,$i-0.8,$max);//face supérieure
imagefilledrectangle($im, $la/3 -$f + 30,$dh + $f+ $i*$dh, $la/3 + 30 -$f + $v[$i],$f+1 + $dh + $i*$dh,$co[$i]); 
}
}
}

else // ****************************************  représentations circulaires : camembert 2D ou 3D
{
//bloc couleur + légende
for ($i=0;$i<=$max;$i++)
{
$co[$i]=couleur($im,$c,$i-1,$max);
imagefilledrectangle($im, 10,$dh+  $i*$dh, 30,$dh +15 + $i*$dh,$co[$i]);
$co[$i]=couleur($im,$c,$i-0.5,$max);//couleurs un peu plus sombre pour les tranches...0.5 pour ne pas les confondre avec le dessus
if ($aff_pertinence) $s='('.$p0[$i].') '; else $s=''; 
imagestring($im, 2, 40, $dh + $i*$dh, $s.formate($nom[$i],35).$v0[$i].'  ('.number_format($v[$i],1,'.',' ').'%)',couleur($im,'noir',0,10));// 26 premiers caractères 
}
//camembert
$deb=$angle0; 
//epaisseur en faisant glisser vers le haut les ellipses sectorisées vides
for ($f=0;$f<$e;$f++)
{
for ($i=0;$i<=$max;$i++)
{
$fin=$deb+$v[$i]*3.6;
$x=$cx;$y=$cy;
if ($type==4) {$x=$cx+$lac/10*cos(($fin+$deb)/2*pi()/180);$y=$cy+$hac/10*sin(($fin+$deb)/2*pi()/180);}
if ($type==4) imagefilledarc($im ,$x , $y -$f, $lac ,$hac , $deb, $fin ,$co[$i],IMG_ARC_PIE); else imagefilledarc($im ,$x , $y -$f, $lac ,$hac , $deb, $fin ,$co[$i],IMG_ARC_NOFILL ); // si type 2D inutile de remplir
$deb=$fin;
}
}
$deb=$angle0;
// finir par le dessus plus clair, avec des étisuettes en blanc 
for ($i=0;$i<=$max;$i++)
{
$co[$i]=couleur($im,$c,$i-1,$max);
$fin=$deb+$v[$i]*3.6;
$x=$cx;$y=$cy;
if ($type==4) {$x=$cx+$lac/10*cos(($fin+$deb)/2*pi()/180);$y=$cy+$hac/10*sin(($fin+$deb)/2*pi()/180);}
imagefilledarc($im ,$x , $y -$e, $lac ,$hac , $deb, $fin ,$co[$i],IMG_ARC_PIE);//avec remplissage
//etiquettes % avec couleurs légende
$co[$i]=couleur($im,'blanc',0,10);
$x=$cx+$lac/2*cos(($fin+$deb)/2*pi()/180);
$y=$cy-10+$hac/2*sin(($fin+$deb)/2*pi()/180);
imagestring($im, 3, $x,$y-$e,  number_format($v[$i],1,'.',' ').'%',$co[$i]);
$deb=$fin;
}
}


if ($auvol) return $im;  // retourner le handle de l'image 
else  //sinon créer le fichier image dans le  dossier images/
{
imagegif($im,'images/graph'.$q.'.gif');
imagedestroy($im);//libération mémoire
return true;
}
}

//couleurs et dégradés  $d niveau du dégradé - $e niveau de degradation maxi 
function couleur($im,$co,$d,$nb)
{
$e=255/($nb+1);
$comp=255-$e*($d+1);
if ($comp<0) $comp=0;
if ($comp>255) $comp=255;
$co=strtoupper($co);
if ($co=="NOIR") return imagecolorallocate($im,0,0,0); 
else if ($co=="BLANC") return imagecolorallocate($im,$comp,$comp,$comp);
else if ($co=="JAUNE")return imagecolorallocate($im,$comp,$comp,0);
else if ($co=="CYAN") return imagecolorallocate($im,0,$comp,$comp);
else if ($co=="MAGENTA") return imagecolorallocate($im,$comp,0,$comp);
else if ($co=="ROUGE") return imagecolorallocate($im,$comp,0,0);
else if ($co=="VERT") return imagecolorallocate($im,0,$comp,0);
else if ($co=="BLEU") return imagecolorallocate($im,0,0,$comp);
else return imagecolorallocate($im,0,0,0);
}

function formate($s,$nb)
{
$s.='..........................................';
return substr($s,0,$nb).'... : ';
}



?>

 Conclusion

Trés pratique pour dépouiller instantanément  un sondage, questionnaire ... cf copie d'écran


 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec Zip Source avec une capture SMOOTH 3D CAMEMBERT par opossum_farceur
Source avec Zip Source avec une capture GRAPHIQUE CAMEMBERT 3D par BEAUBRIUS
Source avec Zip Source avec une capture LES CAMEMBERTS 3D par opossum_farceur
Source avec Zip Source avec une capture UN GRAPHIQUE CAMEMBERT EN 3D par pgpp

Commentaires et avis

Commentaire de crazygogo le 11/03/2010 09:19:26

Bravo pour ton travail qui donne vraiment un résultat sympa, sinon tu pourrais aussi regarder du côté d'artishow: www.artichow.org
et un exemple d'utilisation: http://www.phpcs.com/codes/STATISTIQUE-GRAPHIQUE-COMPOSANT-ARTICHOW_47171.aspx

L'avantage de ton code est que tu as la main sur tous les paramètres car tu dois le connaitre à fond et tu peux l'adapter à tes besoins.

L'avantage d'artishow est la variété des graphiques proposés et l'esthétique des images générées (anti-alias).

Sinon il existe aussi Open flash chart: http://teethgrinder.co.uk/open-flash-chart-2/
qui a l'air bien mais que je n'ai jamais utilisé !



Commentaire de zozo14 le 12/03/2010 22:29:53

pour des polices plus sympa... remplacer imagestring par la fonction ci-dessous
peut être utile  aussi pour fixer l'angle d'inclinaison du texte

function dessinetexte($im,$taille,$x,$y,$txt,$co)
{
$ang=0;
imagettftext($im,10, $ang ,$x ,$y+14 , $co, 'comic.ttf',$txt); //comic.ttf, arial.ttf etc...
}

Commentaire de zozo14 le 12/03/2010 22:33:33

Un utilitaire de création de qcm, sondage, etc...
qui utilise cree_graphique ci-dessus :

http://claude.barbe3.free.fr/Wperso/Questionnaires/qcm.php

Commentaire de calfou le 17/03/2010 20:26:58

Slt,

Chouette code qui m'a bien aidé! J'aurais tout de même des petits trucs à dire.

1/ En local avec Uwamp, ca ne marchais pas a cause des notices. J'ai palié le pblm en ajoutant un error_reporting (E_ALL ^ E_NOTICE);

2/ Faisant des stats pour un reporting, j'avais besoin pour aller plus vite dans l'adaptation d'envoyer des tableaux en nom et valeurs. j'ai donc modifié :
$max=count($noms); // max+1 valeurs , pour prévoir les saisies
$v=array($max); //valeurs en pourcentage
$nom=$noms;
$v0=$val;

Ensuite, j'ai vu que les tableaux ne passaient pas dans l'url :D J'ai donc décidé d'utilisé la methode du include. Et là, le cache m'a bien ennuyé car il fallait un Crtl + F5 pour voir la nouvelle image!! J'ai trouvé grace à google cette méthode : $cont .= '<img src="./images/graph'.$_POST['col_graph'].'.gif?'.md5_file('./images/graph'.$_POST['col_graph'].'.gif').'" alt="Analyses Interventions de '.$_POST['tech'].'" />';

3/ Dans ton exemple tu met les valeurs séparées par une , et non un ; ce qui fait que le graph est faux..

4/ Un peut plus d'explication sur ta fonction aurait été le bienvenue car faut se taper tout le code pour savoir que n= dans l'url c'est la couleur à choisir entre 0 et 5 et que type c'est le type de graph.

5/ Deux Questions :

Qu'est-ce que la pertinence ? Un chiffre ajouté entre parenthèses après le nom mais à part ça?
Qu'est-ce que la saisie? A quoi elle sert exactement?

Commentaire de zozo14 le 17/03/2010 23:44:53

Content que cela puisse servir. En fait, j'ai fait cet outil graphique pour un dépouillement au vol d'un questionnaire, ou les réponses aux questions peuvent être pondérées ( 1, 2 , etc... selon la pertinence de la réponse.
D'autre part certaines questions peuvent demander des saisies de l'utilisateur (réponses de leur cru). Le graphique tient seulement compte du nombre (pondéré avec une valeur 10) de saisies des utilisateurs pour cette question. C'était utile pour mon application création de qcm , que tu peux consulter pour mieux comprendre à l'adresse  http://claude.barbe3.free.fr/Wperso/Questionnaires/qcm.php
d'où la réponse à tes ques tions :
J'avais prévu cette option pertinence pour pondérer les secteurs du camembert, ou les barres... On peut donner une importance plus grande pour certaines réponses d'un questionnaire par exemple. L'option n'est finalement pas utilisée ici (il faudrait multiplier v0(i) par p0(i)), mais cela pourrait être utile. Sinon faire sauter cet argument...

- Idem pour les saisies ...

Commentaire de calfou le 18/03/2010 09:55:04

OK merci, et pour ce que tu indique au niveau du remplacement de imagestring, j'en trouve 3 dans le code. Mais je pige pas lequel il faut remplacer et surtout pourquoi le remplacer par une fonction. Comment on va l'appeller après? (Pas trop fort à ce niveau là moi)

Commentaire de zozo14 le 18/03/2010 10:54:07

imagettftext est plus complet car il permet de choisir une police et son orientation ...
tu remplace imagestring par imagettftext dans le code en ajoutant les arguments necessaires..

Commentaire de calfou le 18/03/2010 14:06:53 9/10

Ok merci, en fait j'ai simplement remplacé le premier pour faire un essais par celui-ci :

imagettftext($im,10, $ang ,10,20, imagecolorallocate($im,255,255,255), './polices/comic.ttf',$titre);

J'ai évidement ajouté un dossier polices là ou se trouve le fichier qui va l'appeller :p Il est vrai que maintenant, le titre du graph est plus chouette!!

J'en ai profité pour virer aussi la pertinence et la saisie qui ne me servait pas ainsi que la création d'image au vol.. Un bon tuto en fait ton code pour moi ;)

Encore merci

Commentaire de deadhand le 02/04/2010 11:29:07

Pas mal !!!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

faire un graphique camembert 3D, a partir d'une base de données [ par otacon67 ] je suis un newbies en PHP, et je voudrais savoir comment creer un camembert en 3D, a partir d'une base de donn&#233;es merci pour votre soutien et vo Rafraichir une page [ par niko14 ] Hello everybody!!Voila le bin's!!En fait voila, j'ai une page ou on choisit un type de budget et on valide!Qd on a valid&#233; on arrive sur une page tableau de couleurs comme dans word [ par niko14 ] slt tout le monde!VOila mon probleme!J'ai un camembert donc je fais choisir les couleurs pour les differentes repartitions et en fait j'avais fait une Librairie traceur fonction 3D [ par Jarod1980 ] Bonjour,Je souhaiterais si il existe une librairie en php permettant de tracer des fonctions mathématiques en 3D. J'ai fais une recherche sur net mais Histogramme empilé [ par moui27 ] Bonjour à tous, J'ai des histogrammes empilés à afficher dans un PDF (par exemple, donner le nombre de demandes client par type de demande et par mois afficher des données d'une BD dans un histogramme ! [ par bezzaz ] Bonjour, au niveau du code de cette page http://www.phpcs.com/codes/HISTOGRAMME-HORIZONTAL_27803.aspx si je veux affecté à $values des données à pa histogramme en php [ par minaangel ] salut mes frères et mes soeurs, j'ai voulu faire l'affichage des resultats en histogramme par exemple: le nombre de publications pour chaque année vo Problème avec un lien dans un envoi mail [ par chatis ] Bonjour,Voilà 3 jours que je me casse la tête avec ça !!! je dois envoyer un lien de payement saferpay par e-mail, mais dans le lien, dans la partie s histogramme php mysql [ par agnes05 ] je veux construire un histogramme a partir des donnees stockees dans ma base de donnee. je dois les extraire et en faire des calculs pr ensuite creer Histogramme avec JpGraph et Bse de donnée [ par thomasazerty ] Salut a ous voila j'aimerai réaliser un histogramme en me servant de JpGraph et ma base de donnée. Que je m'explique voila j'arrive a afficher des cou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales