IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[JpGraph] Problème légende jpgraph


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Par défaut [JpGraph] Problème légende jpgraph
    Hello

    J'utilise jpgraph pour tracer l'évolution des positions tour après tour de pilotes lors de courses. Le problème c'est ce que dès que j'ajoute une légende, l'affichage merdouille et je ne vois pas le rapport.

    Exemple sans légende :



    Avec légende les lignes des abscisses ne sont plus dessinées après la 19ème ligne.



    Je ne vois pas ce qui pourrait être faux dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
             for($i=1;$i<=sizeof($tabPilotes);$i++)
            {   
                $lp = new LinePlot($tabPilotes[$i]['ydata']);          
                $graph->Add($lp); 
                $lp->SetLegend($tabPilotes[$i]['pilote']);  
                $lp->SetWeight(2);
                $lp->SetColor($tabPilotes[$i]['color']);
            }
     
            $graph->legend->SetAbsPos(0,55,'left','top');
            $graph->legend->SetLayout(LEGEND_VERT); 
            $graph->legend->SetLineSpacing(15);
    Il suffit que je commente la ligne "$lp->SetLegend($tabPilotes[$i]['pilote']); " pour que le graph s'affiche correctement.

    En fait je ne comprends pas quel peut être le rapport entre la légende et les données affichées (car je pense que si ça merde c'est à cause des données).

    Donc si quelqu'un a une petite idée.

  2. #2
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut pb de légende
    Je pense comme toi que le pb ne vient pas de la lige sur la légende. Tous les coureurs ne font pas le même nombre de tours :
    le joueur 14 s'arrète avant la fin. la courbe qui le trace s'arrête en 19 et le pb de légende commence en 19...
    Je te conseille donc d'utiliser un tableau de lignes plutôt que de réécrire dans $lp, soit un code (non testé car je n'ai pas tes valeurs initiales) du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     $lp=array();
             for($i=1;$i<=sizeof($tabPilotes);$i++)
            {   
                $lp[$i] = new LinePlot($tabPilotes[$i]['ydata']);          
                $graph->Add($lp[$i]); 
                $lp[$i]->SetLegend($tabPilotes[$i]['pilote']);  
                $lp[$i]->SetWeight(2);
                $lp[$i]->SetColor($tabPilotes[$i]['color']);
            }
     
            $graph->legend->SetAbsPos(0,55,'left','top');
            $graph->legend->SetLayout(LEGEND_VERT); 
            $graph->legend->SetLineSpacing(15);
    Me dire si ça résout le pb

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Par défaut
    Merci pour ta réponse, j'essaie ça ce soir. Je ne vois pas trop ce qu'un tableau de lignes pourrait changer, mais ça vaut le coup d'essayer.

    Du coup je remarque aussi que la ligne du pilote 22 s'arrête elle aussi en 19, à la fin du premier tour.

  4. #4
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Ce n'est qu'une piste effectivement, mais j'avais eu le même genre d'erreur lorsque j'avais du créer une fonction affichant un graphe multiligne ou le nombre de lignes à afficher et le nombre de données par lignes étaient variables. wait & see ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Par défaut
    Ok ça y ressemble beaucoup en effet.
    Si c'est bien ça, ça ressemble à un bug quand même.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 22
    Par défaut
    Bon j'ai pu tester, et ça n'a malheureusement pas réglé le soucis.

    Après différents tests, il s'avère que les lignes verticales arrêtent de s'afficher au 3/4 de la hauteur, 19/25 sur le premier graph.

    9/12 ici


    15/20 ici


    Mon code entier (le tableau $tabPilotes est généré avant en parsant du XML).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
            require_once ('jpgraph/jpgraph.php');
            require_once ('jpgraph/jpgraph_line.php');
     
            $largeur = 170 + ($nb_tours * 25);
            $hauteur = $nb_pilotes * 30;
     
            function _cb_negate($aVal) {return round(-$aVal);}
            $nb_pilotes = -($nb_pilotes);
     
            $graph = new Graph($largeur,$hauteur);
            $graph->SetScale('linlin',$nb_pilotes,0,0,$nb_tours);
            $graph->img->SetAntiAliasing(false);
            $graph->SetMargin(170, 20, 40, 30);
            $graph->SetMarginColor('white');
     
            $graph->yaxis->SetLabelFormatCallback("_cb_negate");
            $graph->yaxis->scale->ticks->Set(1);
            $graph->yaxis->SetFont(FF_ARIAL,FS_NORMAL,9);
            $graph->yaxis->HideZeroLabel(); 
     
            $graph->xaxis->scale->ticks->Set(1);
            $graph->xaxis->SetFont(FF_ARIAL,FS_NORMAL,9);
            $graph->xaxis->SetLabelSide(SIDE_UP);
            $graph->xgrid->Show();
     
            $lp = array();
            for($i=1;$i<=sizeof($tabPilotes);$i++)
            {   
                $lp[$i] = new LinePlot($tabPilotes[$i]['ydata']);  
                $lp[$i]->SetLegend($tabPilotes[$i]['pilote']);          
                $graph->Add($lp[$i]); 
                $lp[$i]->SetWeight(2);
                $lp[$i]->SetColor($tabPilotes[$i]['color']);
            }
     
            $graph->legend->SetAbsPos(0,55,'left','top');
            $graph->legend->SetLayout(LEGEND_VERT); 
            $graph->legend->SetLineSpacing(15);
     
            $graph->Stroke($filename);
            exit;

Discussions similaires

  1. [JpGraph] Problème de légende pour mon graphique secteur jpgraph
    Par yenku dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 27/03/2013, 16h35
  2. Barplot problème légende
    Par Koiky dans le forum R
    Réponses: 2
    Dernier message: 29/02/2012, 18h47
  3. Problème légende
    Par liogo dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/05/2011, 11h23
  4. Problème légende tableau
    Par mmb04 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 11
    Dernier message: 12/06/2007, 13h03
  5. [JpGraph] problème avec header
    Par ciesco dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/01/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo