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] Réaliser un histogramme


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut [Artichow] Réaliser un histogramme
    Bonjour à tous,

    j'essaie de réaliser un histogramme en utilisant des donnée mysql

    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
    43
    44
    45
     
    $req = mysql_query("SELECT
    (SUM(COALESCE(rps_rps_audit * cah.valeur_coefficient_audit,0))*100)/ ((SUM(cah.valeur_coefficient_audit))*point_satisfaisant_audit) AS somme_satisfaisant_hygiene, 
    (SUM(COALESCE(rps_rps_audit * cas.valeur_coefficient_audit,0))*100)/ ((SUM(cas.valeur_coefficient_audit))*point_satisfaisant_audit) AS somme_satisfaisant_securite, 
    (SUM(COALESCE(rps_rps_audit * cae.valeur_coefficient_audit,0))*100)/ ((SUM(cae.valeur_coefficient_audit))*point_satisfaisant_audit) AS somme_satifaisant_environnement
    FROM rps_audit
    INNER JOIN qt_audit ON qt_audit.id_qt_audit=rps_audit.id_qt_audit
    INNER JOIN information_audit ON information_audit.id_audit=qt_audit.id_audit
    LEFT JOIN coefficient_audit cah ON cah.id_coefficient_audit=qt_audit.id_coefficient_hygiene
    LEFT JOIN coefficient_audit cas ON cas.id_coefficient_audit=qt_audit.id_coefficient_securite
    LEFT JOIN coefficient_audit cae ON cae.id_coefficient_audit=qt_audit.id_coefficient_environnement
    WHERE rps_audit.id_client_audit='1'") or die(mysql_error());
     
    while($sql_data = mysql_fetch_assoc($req)) {
     
    	$hygiene = $sql_data['somme_satisfaisant_hygiene'];
    	$securite= $sql_data['somme_satisfaisant_securite'];
    	$environnement= $sql_data['somme_satifaisant_environnement'];
     
    	$values = array ('hygiene'  => '$hygiene');
    	$values = array ('securite'  => '$securite');
    	$values = array ('environnement'  => '$environnement');
    }
    require_once "artichow/BarPlot.class.php";
     
    //require_once "charts/BarPlot.class.php";
     
       $graph = new Graph(400, 400);
       $graph->setAntiAliasing(TRUE);
     
     
       $plot = new BarPlot($values);
       $plot->setBarColor(
          new Color(250, 230, 180)
       );
       $plot->setSpace(5, 5, NULL, NULL);
    	$plot->xAxis->setLabelText($y);
       $plot->barShadow->setSize(3);
       $plot->barShadow->setPosition(Shadow::RIGHT_TOP);
       $plot->barShadow->setColor(new Color(180, 180, 180, 10));
       $plot->barShadow->smooth(TRUE);
     
       $graph->add($plot);
       $graph->draw();
       ?>

    La requête mysql me ressort 3 informations (un pourcentage) et je voudrait les afficher dans l'histogramme.

    J'ai essayé avec le code ci-dessus mais il me retourne ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Class Plot:Expected numeric values for the plot.
    Quel erreur est-je commis? Ma démarche n'est pas correcte?

    merci

    guigui69

  2. #2
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 108
    Points : 82
    Points
    82
    Par défaut
    salut,

    je dirai que le tableau que tu passes a ton histogramme n est pas au bon format, il attend uniquement des chiffres il me semble,

    http://www.artichow.org/code?file=bar-001

    si ca peut t aider

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    voici les chiffres qu'il retourne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    somme_satisfaisant_hygiene 	35.9375 
    somme_satisfaisant_securite 	42.5000
    somme_satifaisant_environnement 50.0000
    Ils ne sont pas dans le bon format?

    guigui69

  4. #4
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 108
    Points : 82
    Points
    82
    Par défaut
    $values est un tableau associatif c est ça qui ne va pas,

    selon moi tu devrais avoir un tableau dans ce format
    $values = array(10, 20, 30)

    et en passant dans $value a la fin de ton traitement il n y a plus qu environnement

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut
    Je suis arrivé a réaliser l'histogramme,

    maintenant, le but c'est que l'histogramme apparaisse dans une page web (php/html)

    voici la page:
    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
     
    $req = mysql_query("SELECT
    (SUM(COALESCE(rps_rps_audit * cah.valeur_coefficient_audit,0))*100)/ ((SUM(cah.valeur_coefficient_audit))*point_satisfaisant_audit) AS somme_satisfaisant_hygiene, 
    (SUM(COALESCE(rps_rps_audit * cas.valeur_coefficient_audit,0))*100)/ ((SUM(cas.valeur_coefficient_audit))*point_satisfaisant_audit) AS somme_satisfaisant_securite, 
    (SUM(COALESCE(rps_rps_audit * cae.valeur_coefficient_audit,0))*100)/ ((SUM(cae.valeur_coefficient_audit))*point_satisfaisant_audit) AS somme_satifaisant_environnement
    FROM rps_audit
    INNER JOIN qt_audit ON qt_audit.id_qt_audit=rps_audit.id_qt_audit
    INNER JOIN information_audit ON information_audit.id_audit=qt_audit.id_audit
    LEFT JOIN coefficient_audit cah ON cah.id_coefficient_audit=qt_audit.id_coefficient_hygiene
    LEFT JOIN coefficient_audit cas ON cas.id_coefficient_audit=qt_audit.id_coefficient_securite
    LEFT JOIN coefficient_audit cae ON cae.id_coefficient_audit=qt_audit.id_coefficient_environnement
    WHERE rps_audit.id_client_audit='1'") or die(mysql_error());
     
    while($sql_data = mysql_fetch_assoc($req)) {
     
    	$hygiene = $sql_data['somme_satisfaisant_hygiene'];
    	$securite= $sql_data['somme_satisfaisant_securite'];
    	$environnement= $sql_data['somme_satifaisant_environnement'];
    	//echo "$date $hits"; // Affiche bien les données
     
        //ton indice de tableau c'est la date
    		$x = array ($hygiene, $securite  ,$environnement);
     
    }
     
    echo "<br><img src=\"essaihis.php?x=".urlencode(serialize($x))."\" alt='Mon graphique'/>";
    essaihis.php
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    <?php
     
    // On vérifie que les données à afficher sur le graphique existent
       if(isset($_GET['x'])) === FALSE) {
          exit;
       }
     
       // On récupère les valeurs à afficher sur le graphique dans $_GET['values'] et on les désérialize
       //$x = @unserialize($_GET['x']);
     
     
       	$param = stripslashes(urldecode($_GET['x']));
    	$x= unserialize ($param);
     
       // On vérifie que les données passées en GET sont correctes
       if(is_array($x)  === FALSE) {
          exit;
       }
     
     
    require_once "artichow/BarPlot.class.php";
    $y = array ('hygiene', 'securite'  ,'environnement');
     
    $graph = new Graph(400, 400);
    //$graph->setAntiAliasing(TRUE);
     
     
     
    $plot = new BarPlot($x);
     
    $plot->setSpace(4, 4, 10, 0);
    $plot->setPadding(40, 15, 10, 40);
     
    $plot->title->set("Recap de l'audit en %");
    $plot->title->setFont(new TuffyBold(11));
    $plot->title->border->show();
    $plot->title->setBackgroundColor(new Color(255, 0, 0, 25));
    $plot->title->setPadding(4, 4, 4, 4);
    $plot->title->move(-20, 25);
     
     
    $plot->yAxis->title->setFont(new TuffyBold(10));
    $plot->yAxis->title->move(-4, 0);
    $plot->yAxis->setTitleAlignment(Label::TOP);
     
     
    $plot->xAxis->title->setFont(new TuffyBold(10));
    $plot->xAxis->setTitleAlignment(Label::RIGHT);
     
    $plot->setBackgroundGradient(
        new LinearGradient(
            new Color(255, 230, 230),
            new Color(255, 255, 255),
            0
        )
    );
     
    $plot->barBorder->setColor(new Color(0, 0, 150, 20));
     
    $plot->setBarGradient(
        new LinearGradient(
            new Color(255, 255, 0, 0),
            new Color(230, 230, 255, 30),
            0
        )
    );
     
     
    $plot->xAxis->setLabelText($y);
    $plot->xAxis->label->setFont(new TuffyBold(7));
     
    $graph->shadow->setSize(4);
    $graph->shadow->setPosition(Shadow::LEFT_TOP);
    $graph->shadow->smooth(TRUE);
    $graph->shadow->setColor(new Color(160, 160, 160));
     
    $graph->add($plot);
    $graph->draw();
       ?>
    dans la page web il me retourne ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img alt="Mon graphique" src="essaihis.php?x=a%3A3%3A%7Bi%3A0%3Bs%3A7%3A%2235.9375%22%3Bi%3A1%3Bs%3A7%3A%2242.5000%22%3Bi%3A2%3Bs%3A7%3A%2250.0000%22%3B%7D"/>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    x	a:3:{i:0;s:7:"35.9375";i:1;s:7:"42.5000";i:2;s:7:"50.0000";}
    Quel erreur est-je commis? Car la je retourne bien le array X, le array Y est fixe donc je le mets directement dans la page php qui créer l'histogramme.

    Ma méthode est-elle la bonne?

    Merci

    guigui69

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut
    j'ai fait un var_dump($x)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array(3) { [0]=>  string(7) "35.9375" [1]=>  string(7) "42.5000" [2]=>  string(7) "50.0000" }
    Mes données semble bonne.

    guigui69

  7. #7
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 108
    Points : 82
    Points
    82
    Par défaut
    alors dans mes souvenirs, je passais mon tableau de valeur a la page qui va afficher le graph avec un implode

    ca va crée une chaine avec tes elements de tabeaux et dans la page ou tu as ton graph tu fais un explode de cette chaine,

    essai cette methode comme ca dans ta variable "x" il n y aura pas les pourcentages

Discussions similaires

  1. Réaliser un histogramme
    Par apprendre.java dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 05/10/2009, 02h01
  2. Réponses: 1
    Dernier message: 06/11/2007, 22h31
  3. réaliser un histogramme
    Par amiine dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/02/2007, 14h16
  4. Réponses: 1
    Dernier message: 01/10/2006, 16h44
  5. Réponses: 6
    Dernier message: 04/01/2006, 12h52

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