Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > JpGraph
JpGraph Forum d'entraide pour la bibliothèque JpGraph permettant de manipuler des images en PHP. Avant de poster -> tutoriels JpGraph
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2007, 18h29   #1
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Par défaut [JpGraph] Inverser l'ordre de l'axe des coordonnées

Bonjour à tous,

Je génère un graphe qui permet de montrer l'évolution au classement d'une équipe de foot par exemple.

L'axe des abscisses détermine les journées. De la première à la dernière journée jouée.

L'axe des coordonées détermine la position de l'équipe à chaque journée.

Le problème est que je voudrai que l'axe des coordonnées commencent par la dernière position possible dans le classement (et non par la première) pour avoir une meilleure vision...

C'est à dire que s'il y a 12 équipes dans le championnat, l'axe des abscisses commence à la première journée et l'axe des coordonnées commence à la douzième position.

J'espère avoir été clair.

Je vous remercie pour votre aide.

Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 20h56   #2
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Bonjour,

Je ne suis pas sur d'avoir bien compris ta problématique.

A première vue ton problème tient plus de la présentation des données dans ton tableau que de la manipulation de jpGraph.

Tu peux nous donner un peu plus d'éléments ?

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 09h37   #3
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Bonjour,

Bon je vois que je n'ai pas été assez clair.

Pour que ce le soit plus, voici une capture d'écran



Les coordonnées entourées ne sont pas en l'endroit espérées. Je voudrai que le 12 commence en bas de l'axe des coordonnées et que le 0 se termine en haut.

Pouvez-vous me dire comment faire svp!!

Merci beaucoup
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 09h56   #4
Nouveau Membre du Club
 
Développeur multimédia
Inscription : octobre 2007
Messages : 57
Détails du profil
Informations personnelles :
Âge : 31

Informations professionnelles :
Activité : Développeur multimédia

Informations forums :
Inscription : octobre 2007
Messages : 57
Points : 37
Points : 37
Envoyer un message via MSN à benbax
Dans ton fichier de configuration, tu as une variable qui je crois te permet de fixer la valeur de départ de tes axes...

Mais je ne comprends pas trop l'interêt. Un autre type de graphique ne serai pas plus interressant?
benbax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 10h12   #5
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Merci. Mais je ne veux pas changer le fichier config. Parce qu'il se peut que dans un championnat il y ait plus de 12 équipes...

Je préfère garder ce type de graphique puisqu'ensuite l'utilisateur pourra choisir l'évolution de son équipe par rapport à une autre équipe.

Et visuellement, c'est plus clair qu'un graph avec bar ou autre.
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 11h04   #6
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Peux tu donner ton code php ?

En particulier la partie production de données.
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 11h12   #7
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Voici le code. Merci pour votre aide

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
$titre = "Evolution des équipes dans le classement";
$axeX  = "Journées";
$axeY  = "Positions";
$legj  = "Evolution";
 
include ("jpgraph163/src/jpgraph.php");
include ("jpgraph163/src/jpgraph_line.php");
include ("jpgraph163/src/jpgraph_bar.php");
 
//requete permettant de compter le nombre d'équipes par division
$queryEquipe=mysql_query("...");
$nbEquipes=mysql_num_rows($queryEquipe);
 
//Position de l'équipe concernée à chaque journée de championnat
$queryEvol=mysql_query("...");
$nbG001=mysql_num_rows($queryEvol);
 
$i1=0;
while ($i1!=$nbG001){
	$moyennes[$i1] = mysql_result($queryEvol, $i1, 'classactu');
	$datax[$i1]    = $i1 + 1;
	$i1++;
}
 
// Nouveau graphique
$graph = new Graph(480,280,"auto",-1);
$graph->SetShadow();
 
$graph->SetScale("textlin");
 
$graph->yaxis->SetColor("black","red");
 
// Titre et sous-titre
$graph->title->Set($titre);
$graph->yaxis->title->Set($axeY);
$graph->xaxis->title->Set($axeX);
 
$graph->title->SetFont(FF_FONT1,FS_BOLD);
 
$graph->img->SetMargin(40,40,40,80);
 
$graph->legend->Pos(0.5,0.85,"center","center");
 
$graph->xaxis->SetTextTickInterval(1);
 
// Libellés
$graph->xaxis->SetTickLabels($datax);
 
// Création de la ligne d'évolution
$b1 = new LinePlot($moyennes);
$b1->SetColor("blue");
$b1->SetLegend($legj);
 
 
$graph->img->SetAntiAliasing();
 
$graph->Add($b1);
 
$graph->Stroke();
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 11h13   #8
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Du côté de la FAQ jpGrah, l'auteur parle de ce genre de chode (cusotmisation des valeurs de l'axe des ordonnées) mais je vois pas comment c'est applicable dans ton cas. C'est possible en définissant une fonction de callback utilisée dans la méthode SetLabelFormatCallback de yaxis.

http://www.aditus.nu/jpgraph/jpgraphfaq.php#F5.8

Citation:
The easiest way to do this is by following a two step process by first a) Negating all Your values and then b) Create a callback function for the Y-axis that negates all the display values.

What will happen now is that after the negative values have been feed into the graph it will create a scale starting at the lowest value, say -8, then go up to the highest, say -1. If these values are then inverted when printed it will in affect achieve the inverted axis appearance. The code snippet below shows a basic example of this technique.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
// Callback to negate the argument
function _cb_negate($aVal) {
    return round(-$aVal);
}
 
// A fake depth curve
$ydata = .... 
 
// Negate all data
$n = count($ydata);
for($i=0; $i<$n; ++$i) {
    $ydata[$i] = -$ydata[$i];
}
 
// Basic graph setup
$graph = new Graph(400,300);
$graph->SetScale("linlin");
 
// Setup axis
$graph->yaxis->SetLabelFormatCallback("_cb_negate");
$plot = new LinePlot($ydata,$xdata);
$graph->Add($plot);
$graph->Stroke();
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 11h18   #9
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Que dirait un

Et

Qu'on puisse regarder tes données

@++
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 14h14   #10
Invité régulier
 
Inscription : juillet 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 26
Points : 6
Points : 6
Ok, merci

Bon, le résultat excompté n'est pas satisfaisant.

Merci pour votre aide, mais je vais garder le premier graphique généré.

Merci encore
Bonjovi51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2008, 19h27   #11
Invité régulier
 
Inscription : août 2005
Messages : 24
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 24
Points : 8
Points : 8
Par défaut Equivalent de SetLabelFormatCallback pour $bplot->value->SetFormat('%d Eur.');

Bonjour j'ai besoin d'un formatage plus poussé que SetFormat('%d Eur.') pour afficher le label d'une donnée
Ya til l'équivelent de SetLabelFormatCallback qui fonctionne à merveil pour les labels d'un axe.

Merci par avance
Laurent Girardeau

Citation:
Envoyé par eric190 Voir le message
Du côté de la FAQ jpGrah, l'auteur parle de ce genre de chode (cusotmisation des valeurs de l'axe des ordonnées) mais je vois pas comment c'est applicable dans ton cas. C'est possible en définissant une fonction de callback utilisée dans la méthode SetLabelFormatCallback de yaxis.

http://www.aditus.nu/jpgraph/jpgraphfaq.php#F5.8



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
// Callback to negate the argument
function _cb_negate($aVal) {
    return round(-$aVal);
}
 
// A fake depth curve
$ydata = .... 
 
// Negate all data
$n = count($ydata);
for($i=0; $i<$n; ++$i) {
    $ydata[$i] = -$ydata[$i];
}
 
// Basic graph setup
$graph = new Graph(400,300);
$graph->SetScale("linlin");
 
// Setup axis
$graph->yaxis->SetLabelFormatCallback("_cb_negate");
$plot = new LinePlot($ydata,$xdata);
$graph->Add($plot);
$graph->Stroke();
girardeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h54.


 
 
 
 
Partenaires

Hébergement Web