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 :

[Artichow] Graphique avec dates en abscisse


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre actif
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Points : 281
    Points
    281
    Par défaut [Artichow] Graphique avec dates en abscisse
    Bonjour à tous,
    j'ai un site éducatif, avec des test exercices etc.
    Et voilà, j'aimerai faire un bon système de statistique.
    La première chose que je voudrais faire, c'est faire un graphique qui montre l'évolution des points ...
    Inutile de vous expliquer plus dans les détails ce que sont les points, mais c'est en bref le nb de questions sues, fois quelques coefficients selon le niveaux de la question etc ...
    Je viens de faire des essai avec artichow, en prenant le modèle line de artichow ...
    Je vous passe le code :
    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
    <?php
    require_once "../artichow-php5/LinePlot.class.php";
     
    $y=array(
    0 => 5,
    1 => 12,
    2=>15,
    3=>16,
    4=>16,
    5=>25,
    6=>1
    );
     
    $_GET['x']=serialize($y);
     
    if(isset($_GET['width'])){
    $width=intval($_GET['width']);
    }else{
    $width=900;
    }
     
    if(isset($_GET['height'])){
    $height=intval($_GET['height']);
    }else{
    $height=400;
    }
     
    $graph = new Graph($width, $height);
    $graph->setAntiAliasing(TRUE);
    $graph->border->setStyle(Line::DOTTED);
    $graph->border->setColor(new Red);
     
    $x=unserialize($_GET['x']);
     
    $plot = new LinePlot($x);
     
    $graph->add($plot);
    $graph->draw();
    ?>
    Voilà, comme vous le devinez, les paramètres sont passés dans l'URL, et les données du graphiques sont passer dans $_GET['x'] , sous forme d'array serlializé au préalable.

    Le résultat est bon, ça marche.
    Mais j'ai remarqué que l'on ne peut pas suivre un autre plan ! Par si l'array y était ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $y=array(
    1=> 5,
    2 => 12,
    3=>15,
    4=>16,
    5=>16,
    6=>25,
    7=>1
    );
    ?>
    Donc voilà, si on ne peut pas préciser les abscisses que l'on veut on ne peut pas faire ça avec des dates ! J'ai essayé : ça marche pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $y=array(
    1996-01-01 => 5,
    1996-01-02 => 12,
    1996-01-03=>15,
    1996-01-04=>16,
    1996-01-05=>16,
    1996-01-06=>25,
    1996-01-07=>1
    );
    Comment faire SVP pour faire un graphique avec des dates ? Et peut-on afficher un texte sur l'abscisse ?
    Par exemple remplacer 1 par "Jour 1" ? Ainsi, ça permettrait d'afficher une date à la place ...
    Merci d'avance.
    PS
    C'est assez urgent ...

  2. #2
    Membre actif
    Homme Profil pro
    Première S
    Inscrit en
    Juillet 2010
    Messages
    266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Première S

    Informations forums :
    Inscription : Juillet 2010
    Messages : 266
    Points : 281
    Points
    281
    Par défaut
    Ah oui, aussi, si vous connaissez une autre librairie spécialisées dans les graphiques avec dates, je suis prenant ! Parce que les dates .... je vais en avoir besoin dans mes graphiques !
    Merci bien.

  3. #3
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    pour afficher les date tu peux exemple utiliser un objet Plot intermédiaire comme ça :
    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
    $y=array(
    '1996-01-01' => 5,
    '1996-01-02' => 12,
    '1996-01-03'=>15,
    '1996-01-04'=>16,
    '1996-01-05'=>16,
    '1996-01-06'=>25,
    '1996-01-07'=>1
     
    );
     
    $_GET['x']=serialize($y);
     
    if(isset($_GET['width'])){
    $width=intval($_GET['width']);
    }else{
    $width=900;
    }
     
    if(isset($_GET['height'])){
    $height=intval($_GET['height']);
    }else{
    $height=400;
    }
     
    $graph = new Graph($width, $height);
    $graph->setAntiAliasing(TRUE);
    $graph->border->setStyle(Line::DOTTED);
    $graph->border->setColor(new Red);
     
    $x=unserialize($_GET['x']);
     
    $group = new PlotGroup;
    $group->axis->bottom->setLabelText(array_keys($x));
     
    $plot = new LinePlot(array_values($x));
    $group->add($plot);
    $graph->add($group);
     
    $graph->draw();
    GNAP !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    et pourquoi ne pas avoir un tableau du style :

    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
    $tab=array(
    	"date" => array("1996-01-01","1996-01-02","1996-01-03","1996-01-04","1996-01-05","1996-01-06","1996-01-07"),
    	"val"  => array("5","12","15","16","16","25","1")
    );
     
     
    $x = $tab['date'] ;
    $y = $tab['val'];
     
    //Generation d'une ligne
    $plot = new LinePlot($y);
    $plot->setColor(new Color(120, 120, 120, 10));
    $plot->setFillColor(new Color(30, 30, 30, 90));
    $plot->mark->setType(Mark::TRIANGLE);
    $plot->mark->setFill(new DarkBlue);
    $plot->mark->setSize(5);
    $group->add($plot);
    $group->legend->add($plot, "un titre", Legend::MARK);
     
    // graduation axe X (tableau de valeur)
    $group->axis->bottom->setLabelText($x);

Discussions similaires

  1. [XL-2010] Graphique avec dates en abscisse
    Par Ginette54 dans le forum Excel
    Réponses: 2
    Dernier message: 14/09/2013, 16h24
  2. Graphique avec date en abcisse
    Par marc-alex dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/10/2009, 14h12
  3. [Artichow] Graphique avec MySQL
    Par melodyyy dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 13/02/2009, 11h10
  4. [Débutant] Graphique avec dates
    Par Alecine dans le forum Excel
    Réponses: 3
    Dernier message: 15/10/2008, 21h35
  5. Graphique avec dates en abscisse
    Par Ed Wood dans le forum MATLAB
    Réponses: 2
    Dernier message: 09/04/2008, 15h05

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