Probleme d'echelle, axes JpGraph (LinePlot)

Probleme d'echelle, axes JpGraph (LinePlot) - PHP - Programmation

Marsh Posté le 05-01-2007 à 14:10:06    

Bonjour voila mes probleme:

 

J'essaye de creer un graphique à l'aide de JPgraph, j'ai longuement parcouru la doc, mais il reste des choses que je n'arrive pas a faire:

 

Voici le modèle de données :

 

Code :
  1. $statsValeurs :
  2. Array
  3. (
  4.     [0] => 21807
  5.     [1] => 35094
  6. )
  7. $statsLegendes:
  8. Array
  9. (
  10.     [0] => avr-06
  11.     [1] => mai-06
  12. )
  13. // Create the graph. These two calls are always required
  14. $graph = new Graph(800,300,"auto" );   
  15. $graph->SetScale("textlin" );
  16. // Create the linear plot
  17. $lineplot=new LinePlot($statsValeurs);
  18. $lineplot->mark->SetType(MARK_UTRIANGLE);
  19. // Add the plot to the graph
  20. $graph->Add($lineplot);
  21. $graph->img->SetMargin(50,30,30,30);
  22. $graph->title->Set($titreGraphe);
  23. $graph->xaxis->title->Set("Mois" );
  24. $graph->yaxis->title->Set("Nombre de clients" );
  25. $graph->title->SetFont(FF_VERDANA, FS_NORMAL, 8);
  26. $graph->yaxis->title->SetFont(FF_VERDANA, FS_NORMAL, 8);
  27. $graph->xaxis->title->SetFont(FF_VERDANA, FS_NORMAL, 8);
  28. $graph->xaxis->SetTickLabels($statsLegendes);
  29. $lineplot->SetColor("black" );
  30. $lineplot->SetWeight(2);
  31. $lineplot->SetBarCenter();
  32. $graph->yaxis->SetWeight(2);
  33. $graph->xaxis->SetWeight(2);
  34. $graph->SetMarginColor("white" );
  35. $graph->ygrid->SetFill(true,'#EEEEEE','#EEEEEE');
  36. // Display the graph
  37. $graph->Stroke($file_graph);


J'obtient cela:

 

http://img187.imageshack.us/img187/1781/graph16a679f969d698af01ru5.pngOr j'ai besoin d'avoir cela comme résultat    :(   dans mon exemple je n'ai que des données pour deux mois, donc ne pas tenir compte du nombre de mois pour lequel le graphe est tracé...)

 

http://img187.imageshack.us/img187/4574/statsgraphfa9.jpg
C'est à dire :

 

Le libellé de l'axe des X au milieu et non a droite.
Les mois (mai-06,avr-06) doivent se trouver entre les graduations et non dessus.
Les points sont marqués par un carré et non un triangle. -> trouvé -> \"$lineplot->mark->SetType(MARK_SQUARE);\\"
La graduation des Y commence à 0.  ->trouvé -> $graph->yaxis->scale->SetAutoMin(0);

Le libellé de l'axe Y ne doit pas déborder sur le libellé des graduations!!!

 

Si vous savez comment faire cela, je vous en serais très reconnaissant!

 

Merci d'avance

 

Seb


Message édité par Alisteroid le 05-01-2007 à 14:23:03
Reply

Marsh Posté le 05-01-2007 à 14:10:06   

Reply

Marsh Posté le 05-01-2007 à 14:32:01    

J'ai reussi a corriger deux erreur :
J'arrive donc à ça :
http://img412.imageshack.us/img412/6125/graph16a679f969d698af01nt9.png

 

Mes problèmes restants sont :

 
  • 1:Le libellé de l'axe des X au milieu et non a droite.
  • 2:Les mois (mai-06,avr-06) doivent se trouver entre les graduations et non dessus.
  • 3:Le libellé de l'axe Y ne doit pas déborder sur le libellé des graduations!!!



Message édité par Alisteroid le 05-01-2007 à 14:35:33
Reply

Marsh Posté le 05-01-2007 à 14:46:50    

Help Meeeeeeeeeeeeeeeeee  [:el hortense]

Reply

Marsh Posté le 05-01-2007 à 15:36:44    

:/

Reply

Marsh Posté le 05-01-2007 à 15:50:31    

Pour le 3, il faut utiliser $graph->img->SetMargin(.., .., .., ..); pour faire en sorte que le graphique (et donc l'axe Y) soit décalé plus la droite
 
Pour le 1 :  
$graph->xaxis->title->Set("mois" );
$graph->xaxis->SetPos($middle);  // $middle vaut 1/2 de la largeur du graphique
 
Pour le 2, je ne crois pas que ça soit possible... Après, mois je ne connais que la v1.12.2
 
Comme lib GPL identique à peu près, y'a Artichow. Peut-être que lui sait faire...http://www.artichow.org/

Reply

Marsh Posté le 05-01-2007 à 16:15:31    

rufo a écrit :

 

Pour le 3, il faut utiliser $graph->img->SetMargin(.., .., .., ..); pour faire en sorte que le graphique (et donc l'axe Y) soit décalé plus la droite

 

->ca décalle tout le graphe, avec le libelle de l'axe Y aussi Ca ne marche que pour la marge haute (le titre reste en haut et de l'espace s'insere entre le titre et le graphe)

 


Pour le 1 :
$graph->xaxis->title->Set(\"mois\" );
$graph->xaxis->SetPos($middle); // $middle vaut 1/2 de la largeur du graphique

 

Cela sert a mettre l'ase des X a unr ordonnée précise :ex : $graph->xaxis->SetPos(10); -> l'axe des X est a y = 10 au lieu de 0;

  

Pour le 2, je ne crois pas que ça soit possible... Après, mois je ne connais que la v1.12.2

 

Comme lib GPL identique à peu près, y'a Artichow. Peut-être que lui sait faire...http://www.artichow.org/
je ne peux utiliser que JPgraph, merci quand même d'avoir essayé de m'aider


Message édité par Alisteroid le 05-01-2007 à 16:17:21
Reply

Marsh Posté le 05-01-2007 à 16:33:12    

désolé. J'ai regardé pas mal d'ex de JPGraph, et à chaque fois, la légende de l'axe X se trouve calée à droite.
Juste pour savoir, pourquoi tu dois forcément utiliser JPGraph?

Reply

Marsh Posté le 05-01-2007 à 16:40:37    

Oui, j'ai pas le choix :/ ça m'est imposé par mon taf

Reply

Marsh Posté le 05-01-2007 à 16:42:36    

non, parce que comme artichow c'est gratuit, ça évite de payer la licence de JPGraph. Moi, à mon boulot, c'est ce que j'ai fait. J'ai porté mon appli de stat de JPGraph sur Artichow et ça marche nickel ;)

Reply

Marsh Posté le 05-01-2007 à 17:05:20    

Je savais même pas que c'était payant :/
 
J'ai jamais eu à faire de graphes auparavent donc j'en chie un peu la :D

Reply

Marsh Posté le 05-01-2007 à 17:05:20   

Reply

Marsh Posté le 05-01-2007 à 17:14:28    

Attention, si vous utilisez JPGraph dans le cadre professionnel, faut payer une licence à l'auteur!  :o  
Les 2 libs sont pas très dures à maîtriser pour faire des graphs simples vu qu'il y a pas mal de doc et d'exemples. Dans le répertoire /doc/ de JPGRaph, y'a tout ce qu'il faut : description des classes et de leurs fonctions et tout plein d'ex de mise en oeuvre avec le code source ;)
 
Après, pour passer à artichow, on n'est pas très dépaysée, c'est les mêmes fonctions au nom près...

Message cité 1 fois
Message édité par rufo le 05-01-2007 à 17:15:13
Reply

Marsh Posté le 05-01-2007 à 17:17:46    

rufo a écrit :

Attention, si vous utilisez JPGraph dans le cadre professionnel, faut payer une licence à l'auteur!   :o  
Les 2 libs sont pas très dures à maîtriser pour faire des graphs simples vu qu'il y a pas mal de doc et d'exemples. Dans le répertoire /doc/ de JPGRaph, y'a tout ce qu'il faut : description des classes et de leurs fonctions et tout plein d'ex de mise en oeuvre avec le code source  ;)

 

Après, pour passer à artichow, on n'est pas très dépaysée, c'est les mêmes fonctions au nom près...

 


Pour la license, c'est pas moi qui m'occupe de ça, je suis prestataire, c'est à la banque de regler ces affaires :D.

 


Reply

Marsh Posté le 05-01-2007 à 17:27:19    

pourquoi je sens que ça va passer à la trape...

Reply

Marsh Posté le 05-01-2007 à 17:53:10    

:??: tu parles du paiement de la license?

Reply

Marsh Posté le 05-01-2007 à 17:59:17    

Alisteroid a écrit :

:??: tu parles du paiement de la license?


oui...

Reply

Marsh Posté le 05-01-2007 à 19:11:25    

Que veux tu que je fasse :??:  
Je travaille pour une SSII, je vais pas aller gueuler sur le patron de la webteam de la banque pour leur dire de payer telle ou telle license!
 
Bref j'ai résolu tous mes problemes sauf le centrages des libellés des abscisses entre les graduations.
 
 
$graph->xaxis->SetTitle('Mois','middle');  pour centrer le titre de l'axe des x
 
$graph->yaxis->SetTitlemargin(60); pour ecarter le titre de l'axe Y, du libellé des ordonnées
 
 
 

Reply

Marsh Posté le 05-01-2007 à 19:16:02    

http://img401.imageshack.us/img401/7448/sanstitrerc1.jpg
Voila le resultat :D:

 

J'ai besoin encore d'un coup de main pour :

 

- Diminuer la taille des carrés dans la légende.
 - Décaller toutes les dates d'1/2 graduation vers la droite (la date doit etre au milieu de la graduation et non pile dessus..voir en rouge sur le screen)
 - Et c'est à peu pret tout :D

Reply

Marsh Posté le 05-01-2007 à 20:38:58    

pour les carrés, si je me souviens bien, tu peux utiliser un image à toi à la place de celle par défaut pour faire les marques.
 
Pour les graduations au milieu, je crois pas que ce soit possible (en tout cas pas dans la version que j'utilise, la 1.12.2).
 
Et pour le coup de la licence, ça relève de ton devoir d'information en tant que professionnel. Après, si ton client ne veut pas payer et se mettre dans l'illégalité, ça le regarde. Mais t'auras fait ton travail en les informant (ils savent peut-être pas que c'était payant). Moi, j'étais dans le même cas que toi. Comme mon patron était pour qu'on mette le soft que j'avais développé en GPL, on a convaincu le client d'utiliser une autre lib, Artichow...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed