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] l'affichage des dates sur l'axe des x sur jpgraph


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    master ingénierie informatique
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : master ingénierie informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut [JpGraph] l'affichage des dates sur l'axe des x sur jpgraph
    bonjour mes amis
    j'espère que vous allez très bien

    bon, j'ai passé toutes les 2 dernière journées pour résoudre ce problème :( , j'aimerai bien que vous m'aidez.

    j'ai les valeurs calculées chaque heure pendant 7 jours (semaine)
    donc nous avons 7 x 24 heures donne 168 valeurs
    je veux les représenter à condition que l'axe des x afficher le jour et le mois seulement, donc pour la période 12 septembre > 18 septembre il affiche 08/10 12/09 jusqu'à 18/09

    comme ça :

    Nom : 1.jpg
Affichages : 625
Taille : 14,1 Ko


    en fait le nombre des jours est 7, alors que les deux tableau des y et des x doivent avoir la même taille, et donc j'ai décidé de répéter la journée 24 fois chaque jour, mais le problème c'est qu'il affiche des journées plusieurs fois même si je diminue la taille de l'image portant le graphe
    les valeurs sont récupéré à partir d'une variable session, c'est juste pour faire les teste, je vais régler ça après.

    /!\ à noter que j'ai affiché les dates sous forme des chaines de caractères normales, vos proposition seront les bienvenues.

    voici 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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    <?php
     
    require("jpgraph/jpgraph.php"); 
    require("jpgraph/jpgraph_line.php");
     
    require_once( "jpgraph/jpgraph_date.php" );
     
    //création
    $graphe = new Graph(600, 300);
    $graphe->SetScale('int');
     
    if(!isset($_SESSION))
    	session_start();
    $donnees=$_SESSION['excel']['donneesPolluant'];
    $stations=$_SESSION['excel']['stations'];
    $dates=$_SESSION['excel']['dates'];
     
    $abscisses=array();
    //on construit l'axe des abscisses
    $i=0;
    $k=1;
    foreach($dates as $date){
    	//$abscisses[0]=$date;
    	//$i++;
    	$j=0;
    	while($j<=23){
    		$abscisses[$i]=$date;
    		//echo "<br>".$k." ".$abscisses[$i];
    		$i++;
    		$j++;
    		$k++;
    	}
    }
     
    $O3=$donnees[$stations[0]]["O3"];
     
     
     
    $xdata = array('val1','vall', 'val2');
    $courbe = new LinePlot($O3);
    $courbe->SetColor("blue");
    $graphe->xaxis->SetTickLabels($abscisses);
     
    $graphe->SetImgFormat('JPEG',80);
    $graphe->Add($courbe);
     
    $graphe->yaxis->HideZeroLabel();
    //$graphe->xaxis->SetScale("DateScale");
    $graphe->ygrid->Show(false);
    $graphe->Stroke();
     
     
     
    ?>

    et voici le résultat:

    Nom : 2.jpg
Affichages : 607
Taille : 16,3 Ko


    je vous remercie d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux nous montrer ce que contient $_SESSION['excel']['dates'] ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    master ingénierie informatique
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : master ingénierie informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    $_SESSION['excel']['dates'] contient les elements suivants: "12/09", "13:09", "14:09", "15,09","16/09","17/09", et "18/09"

    merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise les vraies dates correspondant aux valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $donnees= array(1,4,8,16,7,10);
    $dates= array( "2016-09-12 09:00", "2016-09-12 10:00", "2016-09-12 11:00", "2016-09-13 09:00","2016-09-14 09:00","2016-09-15 09:00");
    foreach ($dates as $value) {
    	$abcsisse[] = strtotime($value);	
    }
     
    $graphe->SetScale( 'datlin' );
    $courbe = new LinePlot($donnees, $abcsisse);
    $graphe->xaxis->scale->SetDateFormat('d/m');
    $graphe->xaxis->scale->ticks->Set(24*60*60);
    $graphe->Add($courbe);
    $graphe->Stroke();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Candidat au Club
    Homme Profil pro
    master ingénierie informatique
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : master ingénierie informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    merci pour votre réponse mais quand j'en ai peu de valeurs, le problème ne se pose pas
    en fait comme j'en ai 168 valeurs et que je ne veux afficher que les numéros des 7 jours, une seul fois pour chacun, c'est là ou je peux pas contrôler les valeurs qui vont êtres affichées

  6. #6
    Candidat au Club
    Homme Profil pro
    master ingénierie informatique
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : master ingénierie informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    en fait ça ne marche même pas

    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
     
     
    <?php
     
     // content="text/plain; charset=utf-8"
    require("jpgraph/jpgraph.php"); 
    require("jpgraph/jpgraph_line.php");
     
    require_once( "jpgraph/jpgraph_date.php" );
     
     
    //création
    $graphe = new Graph(600, 300);
    $graphe->SetScale("intint");
    $donnees= array(1,4,8,16,7,10);
    $dates= array( "2016-09-12 09:00", "2016-09-12 10:00", "2016-09-12 11:00", "2016-09-13 09:00","2016-09-14 09:00","2016-09-15 09:00");
    foreach ($dates as $value) {
    	$abcsisse[] = strtotime($value);	
    }
     
    $graphe->SetScale( 'datlin' );
    $courbe = new LinePlot($donnees, $abcsisse);
    $graphe->xaxis->scale->SetDateFormat('d/m');
    $graphe->xaxis->scale->ticks->Set(24*60*60);
    $graphe->Add($courbe);
    $graphe->Stroke();
     
    ?>
    il donne le petit carré
    Nom : Sans titre.jpg
Affichages : 586
Taille : 5,4 Ko

    merci

  7. #7
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    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 : 595
    Points : 879
    Points
    879
    Par défaut
    Bonjour,
    le plus efficace serait d'utiliser les fonctions d'affichage des dates de JPGraph : http://jpgraph.net/download/manuals/...l/ch14s10.html
    et de choisir ton intervalle, ici la journée, avec SetTimeAlign
    Participez vous aussi !
    Message utile
    Discussion résolue

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut que tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once ('jpgraph/jpgraph_utils.inc.php');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Candidat au Club
    Homme Profil pro
    master ingénierie informatique
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : master ingénierie informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par ypcman Voir le message
    Bonjour,
    le plus efficace serait d'utiliser les fonctions d'affichage des dates de JPGraph : http://jpgraph.net/download/manuals/...l/ch14s10.html
    et de choisir ton intervalle, ici la journée, avec SetTimeAlign
    bonjour pycman
    je vais voir le lient, mais j'aimerai bien que vous avez compris que je veux pas l'interval mais je cherche comment choisir que des élément à afficher parmi un grand interval des x

    merci pycman

  10. #10
    Candidat au Club
    Homme Profil pro
    master ingénierie informatique
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : master ingénierie informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Il faut que tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once ('jpgraph/jpgraph_utils.inc.php');
    merci sabotage mais ça ne marche même pas

    voici le code complet:

    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
     
     
    <?php
     
     // content="text/plain; charset=utf-8"
    require("jpgraph/jpgraph.php"); 
    require("jpgraph/jpgraph_line.php");
     
    require_once( "jpgraph/jpgraph_date.php" );
    require_once ('jpgraph/jpgraph_utils.inc.php');
     
     
    //création
    $graphe = new Graph(600, 300);
    $graphe->SetScale("intint");
    $donnees= array(1,4,8,16,7,10);
    $dates= array( "2016-09-12 09:00", "2016-09-12 10:00", "2016-09-12 11:00", "2016-09-13 09:00","2016-09-14 09:00","2016-09-15 09:00");
    foreach ($dates as $value) {
    	$abcsisse[] = strtotime($value);	
    }
     
    $graphe->SetScale( 'datlin' );
    $courbe = new LinePlot($donnees, $abcsisse);
    $graphe->xaxis->scale->SetDateFormat('d/m');
    $graphe->xaxis->scale->ticks->Set(24*60*60);
     
    $graphe->SetImgFormat('JPEG',80);
    $graphe->Add($courbe);
    $graphe->Stroke();
     
    ?>

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as écris "intint"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Candidat au Club
    Homme Profil pro
    master ingénierie informatique
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : master ingénierie informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    ah ouiiii
    merci bcp
    mais le problème reste le même.

  13. #13
    Candidat au Club
    Homme Profil pro
    master ingénierie informatique
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : master ingénierie informatique

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 4
    Points
    4
    Par défaut solution
    bonjour mes amis
    après 3 jours de la suffrance voici la solution


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    //on divise les x en tranches
    $graphe->xaxis->SetTextTickInterval(24,0);// le nombre des éléments de chaque tanche  
    /*
     à ce niveau on a un ensemble d'éléments, formé par le premier  élément de chaque tranche
     1 signifie qu'on affiche tous les éléments, 2 signifie qu'on affiche un élément et on saut un donc on affiche la moitie des élément par ordre 
    */
    $graphe->xaxis->SetTextLabelInterval(1);

    merci infiniment

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage de dates sur une feuille de calcul à partir d'un tableau VBA
    Par adourlot dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/11/2012, 21h59
  2. Msgraph avec dates sur l'axe des Y
    Par Maroxye dans le forum VBA Access
    Réponses: 0
    Dernier message: 21/12/2007, 18h01
  3. Réponses: 1
    Dernier message: 24/05/2007, 16h02
  4. Réponses: 3
    Dernier message: 05/03/2007, 12h54

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