\n" ; echo " \n" ; echo " \n" ; echo "Histogramme de fréquences par script PHP \n" ; echo " \n" ; echo " \n" ; echo " \n" ; echo " 

\n" ; echo "

" ; echo "

JPHISTOPCT.PHP " ; echo "(gH) :

" ; echo "

   un script PHP rapide pour tracer des histogrammes de fréquences

\n" ; echo "

   à l'aide de la librairie " ; echo "JPGRAPH." ; echo " Tout de suite un exemple :

\n" ; $prm = "jphistopct.php?vdata=5_20_10_15&titr= Bénéfices pour 4 mois significatifs&xmrks=Jan_Juin_Aout_Dec&tailx=400&taily=250" ; echo "
" ; echo "
" ; echo "      " ; echo "
" ; echo "
" ; echo "

Il y a deux façons d'utiliser ce script

\n" ; echo "" ; echo "
" ; echo "   - directement comme une URL ;
" ; echo "     par exemple http://www.info.univ-angers.fr/pub/gh/jphistopct.php?vdata=100_300_200

\n" ; echo "   - indirectement comme une image ;
" ; echo "     par exemple <src img=\"http://www.info.univ-angers.fr/pub/gh/jphistopct.php?vdata=100_300_200\">

\n" ; echo "

" ; echo "" ; echo "

Le tracé de l'histogramme dépend des variables passées en paramètres :

\n" ; echo "
" ; echo "  Seule la variable vdata est obligatoire.

" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "" ; echo "\n" ; echo "\n" ; echo "" ; echo "\n" ; echo "\n" ; echo "" ; echo "\n" ; echo "\n" ; echo "" ; echo "\n" ; echo "\n" ; echo "" ; echo "\n" ; echo "
\n" ; echo "Variable\n" ; echo "\n" ; echo "   Fonction\n" ; echo "\n" ; echo "   Exemple\n" ; echo "
   vdata    données entières séparées par '_'   100_450_50_200
   tailx    hauteur   350
   taily    largeur   400
   titr    titre   Ventes sur 4 mois
   xmrks    labels séparés par '_'   Jan_Juin_Aout_Dec
\n" ; echo "

\n" ; echo "

" ; echo "

Exemple :

\n" ; echo "

" ; $prm1 = "jphistopct.php?vdata=5_20_10_15_30&titr= Ventes en semaine" ; $prm2 = "&xmrks=Lun_Mar_Mer_Jeu_Ven&tailx=400&taily=250" ; echo "      $prm1\n" ; echo "      " ; echo "      " ; echo "      " ; echo "      " ; echo "      $prm2

\n" ; echo "soit l'histogramme

" ; $prm = "jphistopct.php?vdata=5_20_10_15_30&titr= Ventes en semaine&xmrks=Lun_Mar_Mer_Jeu_Ven&tailx=400&taily=250" ; echo "      " ; echo "

" ; echo "

Pour des tracés plus personnalisés, il faut modifier le script " ; echo "ou apprendre en détail JPGRAPH.

\n" ; echo "Voici ce que fait en gros le script après avoir calculé les pourcentages correspondant aux valeurs :\n" ; echo "et la hauteur maximale ramenée à 100 % ce qui permet d'avoir des histogrammes comparables :" ; echo "
" ;

  echo "       // définition du graphique \n" ;
  echo " \n" ;
  echo "       \$graph = new Graph(\$dimx,\$dimy);	\n" ;
  echo "       \$graph->SetScale(\"textlin\");\n" ;
  echo "       \$graph->xaxis->SetTickLabels(\$xmrks);\n" ;
  echo "       \$graph->title-> Set(\"\$titr\");\n" ;
  echo " \n" ;
  echo "       // paramètres de l'histogramme\n" ;
  echo " \n" ;
  echo "       \$barg = new BarPlot(\$data);\n" ;
  echo "       \$barg->SetFillGradient(\"navy\",\"lightsteelblue\",GRAD_MIDVER);\n" ;
  echo "       \$barg->SetColor(\"navy\");\n" ;
  echo "       \$barg->SetWidth(0.6);\n" ;
  echo "       \$barg->SetShadow();\n" ;
  echo " \n" ;
  echo "       // ajout de l'histogramme au graphique et affichage\n" ;
  echo " \n" ;
  echo "       \$graph->Add(\$barg);\n" ;
  echo "       \$graph->Stroke();\n" ;
  echo " \n" ;


  echo "
" ; echo "Cliquer ici pour voir une copie texte du script de tracé.
" ; echo "
\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "\n" ; echo "
\n" ; echo " 

\n" ; echo "\"retour \n" ; echo "   Retour à la page principale de   \n" ; echo "(gH) \n" ; echo " 

\n" ; echo " 

\n" ; echo " 

\n" ; echo " 

\n" ; echo "

\n" ; echo "" ; echo " \n" ; echo " \n" ; return ; } ; # fin de fonction aide ############################### ## ## ## programme principal ## ## ## ############################### # affichage de l'aide si pas de variable vdata if (!isset($_GET["vdata"])) { aide() ; return ; } ; ###################### exemple d'appel # # $prm = "" ; # $prm .= "titr= Pourcentage par classe d'E.C. " ; # $prm .= "&tailx=500" ; # $prm .= "&taily=400" ; # $prm .= "&hdata= 22_8_57_11_0_2_0 ; # valeurs $hdata" ; # $prm .= "&xmrks=1.*_2.*_3.0_4.*_5.*_6.*" ; # nom des barres # # echo "

" ; # # soit : # # jphisto.php?titr= Pourcentage par classe d'E.C. &tailx=500&taily=400 # &vdata=31_11_82_16_0_3&xmrks=1.*_2.*_3.0_4.*_5.*_6.*&grace=63 # # ###################################################### # valeurs par défaut $dimx = 500 ; $dimy = 400 ; $leti = "pas de données via titr tailx taily xmrks " ; $xmrk = "1_2_3_4_5_6_7_8_9_10_11_12" ; $dbg = 0 ; /* 0 en normal, 1 pour test */ # lecture des classes graphiques include ("jpgraph/jpgraph.php"); include ("jpgraph/jpgraph_bar.php"); # récupération des données if (isset($_GET["tailx"])) { $dimx = $_GET["tailx"] ; } ; if (isset($_GET["taily"])) { $dimy = $_GET["taily"] ; } ; if (isset($_GET["vdata"])) { $vdat = urldecode($_GET["vdata"]) ; } ; if (isset($_GET["xmrks"])) { $xmrk = $_GET["xmrks"] ; } ; if (isset($_GET["titr" ])) { $leti = $_GET["titr"] ; } ; if (isset($_GET["dbg" ])) { $dbg = $_GET["dbg"] ; } ; $xlab = explode("_",$xmrk) ; $teff = explode("_",$vdat) ; # préparation des tableaux $data = array() ; $nbd = 0 ; $nbv = count($vdat) ; // calcul du total $tot = 0 ; foreach ($teff as $valr) { $tot += $valr ; } ; // calcul des pourcentages $vmax = 0 ; foreach ($teff as $valr) { $cpct = $valr/$tot ; if ($vmax<$cpct) { $vmax = $cpct ; } $data[$nbd] = round(100*$cpct) ; $nbd++; } ; # fin pour # calcul de la "grace" pour arriver à 100 % # ce qui permet de comparer des histogrammes # si on donne la même taille aux graphiques # plutot que de mettre une fonction exponentielle # décroissante (illisible) on utilise des # valeurs par cas. $hmax = round(100*$vmax) ; $gras = 900 ; if ($hmax>19) { $gras = 380 ; } if ($hmax>21) { $gras = 350 ; } if ($hmax>24) { $gras = 260 ; } if ($hmax>29) { $gras = 220 ; } if ($hmax>39) { $gras = 130 ; } if ($hmax>49) { $gras = 90 ; } if ($hmax>59) { $gras = 60 ; } if ($hmax>69) { $gras = 40 ; } if ($hmax>79) { $gras = 25 ; } if ($hmax>89) { $gras = 10 ; } if ($hmax>99) { $gras = 00 ; } $hdat = implode("_",$data) ; /* en fonction de dbg, affichage des valeurs ou du graphique */ if ($dbg==1) { $leti = "gras $gras hmax $hmax " ; echo " vdata $vdat
\n" ; echo " hdata $hdat
\n" ; echo " grac $gras
\n" ; echo " xmrk $xmrk
\n" ; echo " leti $leti
\n" ; echo " dimx $dimx
\n" ; echo " dimx $dimy
\n" ; } else { // définition du graphe $graph = new Graph($dimx,$dimy); $graph->SetScale("textlin"); $graph->xaxis->SetTickLabels($xlab); $graph->title-> Set("\n$leti\n"); # pour arriver à 100 % $graph-> yaxis->scale->SetGrace ($gras); // paramètres de l'histogramme $barg = new BarPlot($data); $barg->SetFillGradient("navy","lightsteelblue",GRAD_MIDVER); $barg->SetColor("navy"); $barg->SetWidth(0.6); $barg->SetShadow(); // ajout et affichage $graph->Add($barg); $graph->Stroke(); } ; # fin de si dbg ?>