Légende partielle de Camembert avec Jpgraph

Louchart Dominique -  
 roum -
Bonjour,
Il peut arriver que l'on souhaite avoir un libellé différent sur la légende et autour du camembert.
On peut aussi souhaiter ne faire apparaître les libellés que si le % angulaire du 'slice' est suffisant.
J'ai été amené à modifier le script de 'jpgraph-pie.php' pour cela et je vous communique mes modifications.
Peut-être y a-t-il d'ailleurs une meilleure solution ?

Ajouter dans la liste des champs de l'objet PIEPLOT :
(vers la ligne 59)
var $labelslice=array(); // texte simplifié autour du camembert
var $labeltxt=false; // affichage texte simplifié si true ou valeur/pc si false
var $labelpcmin=0; // Pourcentage minimal autorisant l'affichage (entre 0 et 100 inclus)
var $sliceaffiche=-1; // N° du slice affiché

ajouter les deux fonctions suivantes permettant de définir les paramètres :
(vers la ligne 208)
// DL : Should we display actual value or percentage? Pourcentage minimal sinon pas d'affichage
function SetLabelPcMin($pcmin) {
if( $pcmin < 0 || $pcmin > 99 )
JpGraphError::Raise("PiePlot::SetLabelPcMin() Type for pie plots must be >0 et <100 (not $pcmin).");
$this->labelpcmin=$pcmin;
}

// DL : Should we display Txt impose ?
function SetLabelTxt($aLblslice) {
$this->labeltxt=true;
$this->labelslice=$aLblslice; // array des textes simplifiés autour du camembert
}

compléter le constructeur de l'objet
vers la ligne 70
$this->sliceaffiche=-1; // N° du slice affiché repositionné à - 1. ajout DL

Modifier la fonction StrokeLabel en son début :
function StrokeLabel($dllabel,$img,$xc,$yc,$a,$r)
{ $this->sliceaffiche++;
if ($dllabel>=$this->labelpcmin) { // Ajout DL pour limiter l'affichage
// Choix de ce qui sera affiché (Ajout DL)
if ($this->labeltxt)
$label=$this->labelslice[$this->sliceaffiche];
else $label=$dllabel;
et ajouter } en fin de fonction StrokeLabel.
A voir également:

1 réponse

roum
 
Bonjour,
je viens juste de découvrir jpgraph et je veux savoir si vous pouvez me donner plus d'explications sur les principales rubriques de la création d'un graphe avec jpgraph.
merci
-1