Changeset 32667 in spip-zone


Ignore:
Timestamp:
Nov 4, 2009, 9:31:24 PM (10 years ago)
Author:
olivier.gautier@…
Message:

On remet en place le script d'erational concernant les formes de marqueurs : l'erreur rencontrée venait du fait que les constantes étaient posées avant les inclusions des scripts JpGraph?, elles étaient donc mal interprétées. En plaçant la définition des constantes juste après les inclusions, ça rentre dans l'ordre.

On remet dans le bon ordre les légendes des graphes multiples ou accumulés ($graph->legend->SetReverse?();)

Des options supplémentaires : couleurs de fond et dégradé du graphe complet, de la partie graphique uniquement ou des marges, résolution fine des camemberts et camemberts 3D, espacements de la graduation verticale (proche, normale, ou large), couleur du titre du graphe, ombre portée par le graphe (peut-être à compléter avec la taille et la couleur de l'ombre...), rotation du graphe. A compléter et documenter ultérieurement.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/jpgraph/jpgraph_fonctions.php

    r32647 r32667  
    101101        $option="")
    102102{
    103        
    104           // constantes
    105           $marqueur_formes = array("carre"=>MARK_SQUARE,
    106                      "triangle"=>MARK_UTRIANGLE,
    107                      "triangle_bas"=>MARK_DTRIANGLE,
    108                      "losange"=>MARK_DIAMOND,
    109                      "cercle"=>MARK_CIRCLE,
    110                      "disque"=>MARK_FILLEDCIRCLE,
    111                      "croix"=>MARK_CROSS,
    112                      "croix_x"=>MARK_X,
    113                      "etoile"=>MARK_STAR);
    114    
     103
     104
    115105    // traiter les parametres en entree
    116106    $type_graphe = strtolower(trim($type_graphe));  // pour pb avec les modeles si du blanc en fin de ligne
     
    150140    chdir($cwd);
    151141   
     142     // constantes
     143          $marqueur_formes = array("carre"=>MARK_SQUARE,
     144                     "triangle"=>MARK_UTRIANGLE,
     145                     "triangle_bas"=>MARK_DTRIANGLE,
     146                     "losange"=>MARK_DIAMOND,
     147                     "cercle"=>MARK_CIRCLE,
     148                     "disque"=>MARK_FILLEDCIRCLE,
     149                     "croix"=>MARK_CROSS,
     150                     "croix_x"=>MARK_X,
     151                     "etoile"=>MARK_STAR);
     152   
    152153   
    153154    // creation du graphe
     
    156157                $graph->SetScale("linlin");
    157158                $plot = new ScatterPlot($donnee,$donneedeux);
    158                 // Bizarrement, le script de forme des marqueur est inopérant (marqueur invisible) pour les barres... On rétablit un test en dur qui fonctionne
    159                 if (isset($marqueur['nom'])) {
    160                         switch ($marqueur['nom']) {
    161                                 case "triangle": $plot->mark->SetType(MARK_UTRIANGLE); break;
    162                                 case "triangle_bas": $plot->mark->SetType(MARK_DTRIANGLE); break;
    163                                 case "losange": $plot->mark->SetType(MARK_DIAMOND); break;
    164                                 case "cercle": $plot->mark->SetType(MARK_CIRCLE); break;
    165                                 case "disque": $plot->mark->SetType(MARK_FILLEDCIRCLE); break;
    166                                 case "croix": $plot->mark->SetType(MARK_CROSS); break;
    167                                 case "croix_x": $plot->mark->SetType(MARK_X); break;
    168                                 case "etoile": $plot->mark->SetType(MARK_STAR); break;
    169                                 default: $plot->mark->SetType(MARK_SQUARE); break;
    170                         }
    171                 }
     159                if (isset($marqueur_formes[$marqueur['nom']]))
     160                        $plot->mark->SetType($marqueur_formes[$marqueur['nom']]);
    172161                if ($marqueur['contour']) $plot->mark->SetColor($marqueur['contour']);
    173162                if ($marqueur['fond']) $plot->mark->SetFillColor($marqueur['fond']);
     
    183172                $graph->SetScale("textlin");
    184173                $plot = new ScatterPlot($donnee);
    185                 // Bizarrement, le script de forme des marqueur est inopérant (marqueur invisible) pour les barres... On rétablit un test en dur qui fonctionne
    186                 if (isset($marqueur['nom'])) {
    187                         switch ($marqueur['nom']) {
    188                                 case "triangle": $plot->mark->SetType(MARK_UTRIANGLE); break;
    189                                 case "triangle_bas": $plot->mark->SetType(MARK_DTRIANGLE); break;
    190                                 case "losange": $plot->mark->SetType(MARK_DIAMOND); break;
    191                                 case "cercle": $plot->mark->SetType(MARK_CIRCLE); break;
    192                                 case "disque": $plot->mark->SetType(MARK_FILLEDCIRCLE); break;
    193                                 case "croix": $plot->mark->SetType(MARK_CROSS); break;
    194                                 case "croix_x": $plot->mark->SetType(MARK_X); break;
    195                                 case "etoile": $plot->mark->SetType(MARK_STAR); break;
    196                                 default: $plot->mark->SetType(MARK_SQUARE); break;
    197                         }
    198                 }
     174                if (isset($marqueur_formes[$marqueur['nom']]))
     175                        $plot->mark->SetType($marqueur_formes[$marqueur['nom']]);
    199176                if ($marqueur['epaisseur'])$plot->mark->SetWidth($marqueur['epaisseur']);
    200177                if ($marqueur['contour']) $plot->mark->SetColor($marqueur['contour']);
     
    219196                                        // L'epaisseur est sorti du modele, voir comment reintegrer ulterieurement
    220197                                        //   if ($epaisseur) $plot->SetWeight($epaisseur);
    221                                         if (isset($marqueur['nom'])) {
    222                                                 switch ($marqueur['nom']) {
    223                                                         case "triangle": $plot->mark->SetType(MARK_UTRIANGLE); break;
    224                                                         case "triangle_bas": $plot->mark->SetType(MARK_DTRIANGLE); break;
    225                                                         case "losange": $plot->mark->SetType(MARK_DIAMOND); break;
    226                                                         case "cercle": $plot->mark->SetType(MARK_CIRCLE); break;
    227                                                         case "disque": $plot->mark->SetType(MARK_FILLEDCIRCLE); break;
    228                                                         case "croix": $plot->mark->SetType(MARK_CROSS); break;
    229                                                         case "croix_x": $plot->mark->SetType(MARK_X); break;
    230                                                         case "etoile": $plot->mark->SetType(MARK_STAR); break;
    231                                                         default: $plot->mark->SetType(MARK_SQUARE); break;
    232                                                 }
    233                                         }
     198                                        if (isset($marqueur_formes[$marqueur['nom']]))
     199                                                $plot->mark->SetType($marqueur_formes[$marqueur['nom']]);
    234200                                        if ($marqueur['contour']) $plot->mark->SetColor($marqueur['contour']);
    235201                                        if ($marqueur['fond']) $plot->mark->SetFillColor($marqueur['fond']);
     
    246212                                // L'epaisseur est sorti du modele, voir comment reintegrer ulterieurement
    247213                                //   if ($epaisseur) $plot->SetWeight($epaisseur);
    248                                 if (isset($marqueurtrois['nom'])) {
    249                                         switch ($marqueurtrois['nom']) {
    250                                                 case "triangle": $plot3->mark->SetType(MARK_UTRIANGLE); break;
    251                                                 case "triangle_bas": $plot3->mark->SetType(MARK_DTRIANGLE); break;
    252                                                 case "losange": $plot3->mark->SetType(MARK_DIAMOND); break;
    253                                                 case "cercle": $plot3->mark->SetType(MARK_CIRCLE); break;
    254                                                 case "disque": $plot3->mark->SetType(MARK_FILLEDCIRCLE); break;
    255                                                 case "croix": $plot3->mark->SetType(MARK_CROSS); break;
    256                                                 case "croix_x": $plot3->mark->SetType(MARK_X); break;
    257                                                 case "etoile": $plot3->mark->SetType(MARK_STAR); break;
    258                                                 default: $plot3->mark->SetType(MARK_SQUARE); break;
    259                                         }
    260                                 }
     214                                if (isset($marqueur_formes[$marqueurtrois['nom']]))
     215                                        $plot3->mark->SetType($marqueur_formes[$marqueurtrois['nom']]);
    261216                                if ($marqueurtrois['contour']) $plot3->mark->SetColor($marqueurtrois['contour']);
    262217                                if ($marqueurtrois['fond']) $plot3->mark->SetFillColor($marqueurtrois['fond']);
     
    274229                                // L'epaisseur est sorti du modele, voir comment reintegrer ulterieurement
    275230                                //   if ($epaisseur) $plot->SetWeight($epaisseur);
    276                                 if (isset($marqueurdeux['nom'])) {
    277                                         switch ($marqueurdeux['nom']) {
    278                                                 case "triangle": $plot2->mark->SetType(MARK_UTRIANGLE); break;
    279                                                 case "triangle_bas": $plot2->mark->SetType(MARK_DTRIANGLE); break;
    280                                                 case "losange": $plot2->mark->SetType(MARK_DIAMOND); break;
    281                                                 case "cercle": $plot2->mark->SetType(MARK_CIRCLE); break;
    282                                                 case "disque": $plot2->mark->SetType(MARK_FILLEDCIRCLE); break;
    283                                                 case "croix": $plot2->mark->SetType(MARK_CROSS); break;
    284                                                 case "croix_x": $plot2->mark->SetType(MARK_X); break;
    285                                                 case "etoile": $plot2->mark->SetType(MARK_STAR); break;
    286                                                 default: $plot2->mark->SetType(MARK_SQUARE); break;
    287                                         }
    288                                 }
     231                                if (isset($marqueur_formes[$marqueurdeux['nom']]))
     232                                        $plot2->mark->SetType($marqueur_formes[$marqueurdeux['nom']]);
    289233                                if ($marqueurdeux['contour']) $plot2->mark->SetColor($marqueurdeux['contour']);
    290234                                if ($marqueurdeux['fond']) $plot2->mark->SetFillColor($marqueurdeux['fond']);
     
    300244                            $graph->title->Set(utf8_decode($titre));
    301245                            if (count($legende)>1)
    302                                 $graph->xaxis->SetTickLabels($legende); 
     246                                {$graph->xaxis->SetTickLabels($legende); $graph->legend->SetReverse();} 
    303247                            break;
    304248                           
     
    345289                            $graph->title->Set(utf8_decode($titre));
    346290                            if (count($legende)>1)
    347                                 $graph->xaxis->SetTickLabels($legende);
     291                                {$graph->xaxis->SetTickLabels($legende); $graph->legend->SetReverse();}
    348292                        if ($legendetrois[0]) $graph->xaxis->title->Set($legendetrois[0]);
    349293                        if ($legendetrois[1]) $graph->yaxis->title->Set($legendetrois[1]);
     
    393337                            $graph->title->Set(utf8_decode($titre));
    394338                            if (count($legende)>1)
    395                                 $graph->xaxis->SetTickLabels($legende);
     339                                {$graph->xaxis->SetTickLabels($legende); $graph->legend->SetReverse();}
    396340                        if ($legendetrois[0]) $graph->xaxis->title->Set($legendetrois[0]);
    397341                        if ($legendetrois[1]) $graph->yaxis->title->Set($legendetrois[1]);
     
    419363                                        $plot->SetTheme('earth');
    420364                                        break;
    421                             }     
     365                            }
     366                            //Option de resolution fine
     367                            if ($option['resolution_fine']) $graph->SetAntiAliasing();
    422368                            // titre & legende
    423369                            $graph->title->Set(utf8_decode($titre));
    424370                            if (count($legende)>1)
    425                                 $plot->SetLegends($legende);       
     371                                $plot->SetLegends($legende);
    426372                            break;
    427373        case "camembert3d":  $graph = new PieGraph($largeur,$hauteur);
    428374                            // Create the linear plot
    429375                            $plot = new PiePlot3D($donnee);
    430                             if ($option['angle']) $plot->SetAngle((int) $option['angle']);
     376                            //Choisir un autre angle de visualisation en 3D
     377                            if ($option['camembert_angle']) $plot->SetAngle((int) $option['camembert_angle']);
    431378                            // style & couleur
    432379                            switch ($couleur['fond']) {
     
    446393                                        $plot->SetTheme('earth');
    447394                                        break;
    448                             }     
     395                            }
     396                            //Option de resolution fine
     397                            if ($option['resolution_fine']) $graph->SetAntiAliasing();
    449398                            // titre & legende
    450399                            $graph->title->Set(utf8_decode($titre));
     
    454403    }
    455404   
    456     //Options du graphe
    457     if ($option['ombre']) $graph->SetShadow();
     405    //*********Options du graphe************
     406    //Ombre du graphe
     407    if ($option['graphe_ombre']) $graph->SetShadow();
     408    //Couleur de la bordure du graphe
     409    if ($option['graphe_bordure_couleur']) $graph->SetFrame(true,$option['graphe_bordure_couleur'],2);
     410    //Couleur de fond de la partie graphique du graphe
    458411    if ($option['graphe_couleur']) $graph->SetColor($option['graphe_couleur']);
     412    //Couleur de fond des marges du graphe
    459413    if ($option['graphe_couleur_fond']) $graph->SetMarginColor($option['graphe_couleur_fond']);
     414    //Dégradé en fond de graphe...
     415    if (isset($option['graphe_couleur_degrade1']) AND isset($option['graphe_couleur_degrade2']))
     416    {
     417        $style_degrades=array('horizontal1'=>GRAD_VER,'horizontal2'=>GRAD_MIDVER,'vertical1'=>GRAD_HOR,'vertical2'=>GRAD_MIDHOR,'horizontal3'=>GRAD_LEFT_REFLECTION,'horizontal4'=>GRAD_RIGHT_REFLECTION,'centre1'=>GRAD_CENTER,'centre2'=>GRAD_WIDE_MIDHOR,'centre3'=>GRAD_WIDE_MIDVER,);
     418        foreach ($style_degrades as $cle=>$val)
     419        {
     420                if ($option['graphe_style_degrade']==$cle)
     421                {
     422                        if ($option['graphe_domaine_degrade']=='tout') {$graph->SetBackgroundGradient($option['graphe_couleur_degrade1'],$option['graphe_couleur_degrade2'],$val,BGRAD_FRAME);}
     423                        if ($option['graphe_domaine_degrade']=='marge') {$graph->SetBackgroundGradient($option['graphe_couleur_degrade1'],$option['graphe_couleur_degrade2'],$val,BGRAD_MARGIN);}
     424                        if ($option['graphe_domaine_degrade']=='graphique') {$graph->SetBackgroundGradient($option['graphe_couleur_degrade1'],$option['graphe_couleur_degrade2'],$val,BGRAD_PLOT);}
     425                }
     426        }
     427    }
     428   
     429    //Effectuer une rotation du graphe
    460430    if ($option['graphe_angle']) $graph->SetAngle((int)$option['graphe_angle']);
     431    //Style des axes...
    461432    // if ($option['graphe_axe_style']=='double') $graph->SetAxisStyle(AXSTYLE_BOXIN);
    462     if ($option['graphe_bordure_couleur']) $graph->SetFrame(true,$option['graphe_bordure_couleur'],2);
    463     // $graph->SetBackgroundGradient('blue:1.5','blue:0.5',GRAD_CENTER,BGRAD_FRAME);
     433   
     434    //Espacement des graduations verticales
     435    if ($option['graduation_verticale_espacement']=='proche') $graph->SetTickDensity(TICKD_DENSE);
     436    if ($option['graduation_verticale_espacement']=='normal') $graph->SetTickDensity(TICKD_NORMAL);
     437    if ($option['graduation_verticale_espacement']=='large') $graph->SetTickDensity(TICKD_SPARSE);
     438   
     439    // Couleur du titre
     440    if ($option['titre_couleur']) $graph->title->SetColor($option['titre_couleur']);
     441
     442    //************Fin des options************
     443   
    464444   
    465445    // Attacher le trace au graph
Note: See TracChangeset for help on using the changeset viewer.