JPGraph - Axe des Y inversé !

Résolu
cs_prim Messages postés 12 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 23 mars 2009 - 2 sept. 2005 à 16:40
cs_prim Messages postés 12 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 23 mars 2009 - 3 sept. 2005 à 00:23
Bonjour à tous !
J'ai un léger problème qui me hante quotidiennement lol

Tout d'abord avant de vous expliquer je vais vous montrer mon graphe : http://legroupedcachan.free.fr/pes/evolution.php

Il s'agit en faite d'un graphe qui représente l'évolution du classement d'un joueur dans une ligue mis à jour mensuellement.
Donc logiquement, le 0 de l'axe des Y se retrouve en haut puisque le mieux classé est le numéro 1 de la ligue et donc forcément tout en haut ...

Mon problème est le suivant : vous remarquerez que sur le graphe lorsque j'affiche les valeurs, elles sont négatives !!!... et bien évidemment un classement étant positif, je souhaiterais indiquer ces valeurs en positif ... j'ai vraiment tout essayé mais rien n'y fait ! Voivi mon code :

<?php
include ("../outils/jpgraph/source/jpgraph.php");
include ("../outils/jpgraph/source/jpgraph_line.php");
include ("../outils/jpgraph/source/jpgraph_error.php");



// Callback to negate the argument
function _cb_negate($aVal) {
return round(-$aVal);
}



$ydata = array(1,15,7,1,3,5);
$xdata = array("06/2005","07/05","08/2005","09/2005","10/2005","11/2005");



// Negate all data
$n = count($ydata);
for($i=0; $i<$n; ++$i) {
$ydata[$i] = round(-$ydata[$i]);
}



// Basic graph setup
$graph = new Graph(400,300,"auto");
$graph->SetScale("linlin");
$graph->img->SetMargin(50,50,60,40);
$graph->SetMarginColor('white');
$graph->SetColor('white');


$graph->title->Set("Evolution");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->title->SetColor("white");


$graph->subtitle->Set("(Negated Y-axis)");
$graph->subtitle->SetFont(FF_FONT1,FS_NORMAL);
$graph->subtitle->SetColor("white");


// Setup axis
$graph->yaxis->SetLabelFormatCallback("_cb_negate");
$graph->xaxis->SetTickLabels($xdata);


$p1 = new LinePlot($ydata);
$p1->SetColor("yellow");
$p1->SetWeight(2);
$p1->mark->SetType(MARK_FILLEDCIRCLE);
$p1->mark->SetFillColor("red");
$p1->mark->SetWidth(4);
$p1->SetColor("blue");
$p1->SetCenter();
$p1->value->show();



$graph->Add($p1);
$graph->Stroke();
?>

Merci si quelqu'un pouvait m'aider

2 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
2 sept. 2005 à 22:14
Salut,



En un mot : SUUUUUUPEEEEEER !!!



PhP viend de prendre une nouvelle tournure pour moi. Cette librairie
graphique casse la barraque. En fait, c'est même la première librairie
"professionelle" que je croise (!= "home_made_library" ;). Et ça fait
plaisir!



Bon bref du coup j'ai téléchargé et me suis lancé tout azimute dans les sources, docs, ...etc ... et ton code:



En fait tu inverse les valeurs des Y par une fonction callback. Et ben
en toute logique, rien n'empeche de les réinverser pour l'affichage.



Au niveau de ta précédante fonction :

// Callback to eliminate the minus of a negate argument

function _cb_no_minus($aVal) {

return str_replace("-","",$aVal);

}



Puis tu insert l'appel à cette fonction :

$p1->SetCenter();

$p1->value->SetFormatCallback("_cb_no_minus"); // <= cette ligne !!!

$p1->value->show();



Par contre, j'ai encore beaucoup de chose à apprendre sur cette librairie... :(

Merci de me faire découvrir,

A+
3
cs_prim Messages postés 12 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 23 mars 2009
3 sept. 2005 à 00:23
Là tu m'as fait un super kifff mec !!!!!!!!!!!!!!!
Tu me sauves d'un big prob dont je réfléchissais depuis longtemps rien qu'en une seule ligne et apparemment sans trop de difficulté pour toi !
Merci à toi et heureux de t'avoir fait découvrir JPGraph : pour moi c'est la meilleur librairie graphique de PHP !

Merci encore de ta réponse !!
0
Rejoignez-nous