[PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

[PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées



  1. #1
    Pollux32

    [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées


    ------

    Bonjour,

    Je ne suis pas un féru de PHP, et j'ai besoin d'un peu d'aide

    contexte :
    J'ai une station météo dont je prend des données toutes les 5 minutes que je stocke dans un fichier de 3 jours (nommé "meteo_72h.dat")
    Chaque ligne a cette apparence : « 2020-10-18 12:45|1024,5|13,2|91|0|0|2|NE| 14|4,8 » où les données sont séparées par un « | »
    Je m'intéresse ici au deux premières (faut bien commencer), la date et la pression atmosphérique. Je voudrais les voir représentées en histogramme à barres cumulées : les basses pressions (<1015) en bleu et au-dessus, (éventuellement) les hautes pressions en jaune.

    Résultat :
    Le graphe a l'allure que j'espérais, mais pas les couleurs, ni les dates.

    Vous pouvez trouver un fichier "meteo_72h.dat" là : https://www.dropbox.com/s/1ks8dd5xhy...o_72h.dat?dl=0

    Merci d'avance pour vos pistes,

    Nom : test_jpgraph.php.png
Affichages : 189
Taille : 15,2 Ko

    Code PHP:
    <?php 
    require_once( '../jpgraph/jpgraph.php' );
    require_once( 
    '../jpgraph/jpgraph_bar.php' );
    require_once( 
    '../jpgraph/jpgraph_date.php' );
    setlocaleLC_ALL'et_EE.ISO-8859-1' );

    $ws_pr_x 0// pression maX
    $ws_pr_n 9999// pression miN
    $Fichier file'meteo_72h.dat' );
    for ( 
    $i 0$i 864$i++ ) {
      
    $data explode"|"$Fichier$i ] );
      
    /* 
      0 date et heure
      1 pression
      2 temp
      3 hum
      4 rain
      5 rain rate
      6 direction du vent en chiffres
      7 idem en lettres
      8 vent
      9 rafales
      */

      // stockage dates et heures et minutes
      
    $ws_dt$i ] =  strtotime($data]); // ????
      // stockage pressions
      
    $data] = str_replace",""."$data] );  // remplace les virgules par des points
        // Détermination des pression min et max
      
    if ( $ws_pr_x $data] )$ws_pr_x $data]; //pression maX
      
    if ( $ws_pr_n $data] )$ws_pr_n $data]; //pression miN
        // création des séries, la première, $ws_prb, pour les basses pressions, limitée à 1015 ; la seconde, $ws_prh, pour les hautes pressions 
      
    if ( $data] > 1015 ) {
        
    $ws_prb$i ] = 1015;
        
    $ws_prh$i ] = $data] - 1015;
      } else {
        
    $ws_prb$i ] = $data];
        
    $ws_prh$i ] = 0;
      }
    // fin de la lecture du fichier
    //fclose( $Fichier ); // On ferme le fichier // BEUGUE !

    //---------------------------------------------------------------------------

    if ( $ws_pr_n 1015 ) {
      
    $ws_pr_n 1015;
    };
    $ws_pr_n -= 1;
    $ws_pr_x += 1;

    // Create the graph. These two calls are always required
    $graph = new Graph1000400 );
    $graph->SetScale"datlin"$ws_pr_n$ws_pr_x ); // échelle de date, min et max en y

    //$graph->SetShadow();
    $graph->img->SetMargin601010120);

    // Create the bar plots
    $b1plot = new BarPlot$ws_prb );
    $b1plot->SetFillColor('blue');
    $b2plot = new BarPlot$ws_prh );
    $b2plot->SetFillColor('yellow');

    // Create the grouped bar plot
    $gbplot = new AccBarPlot( array( $b1plot$b2plot ) );

    // Set the angle for the labels to 90 degrees
    $graph->xaxis->SetLabelAngle90 );
    $graph->xaxis->SetPos$ws_pr_n );
    // The automatic format string for dates can be overridden
    $graph->xaxis->scale->SetDateFormat'd/m/Y H:i' );
    $graph->xaxis->scale->SetTimeAlignDAYADJ_1 );

    //transparence
    //$graph->SetFrame(true,'black:0', 1); // PAS PRIS EN COMPTE !
    //$graph->img->SetTransparent('black');

    // ...and add it to the graPH
    $graph->Add$gbplot );

    //$graph->xaxis->title->Set("X-title");
    $graph->yaxis->title->Set"hPA" );

    //$graph->title->SetFont( FF_FONT1, FS_BOLD );
    //$graph->yaxis->title->SetFont( FF_FONT1, FS_BOLD );
    //$graph->xaxis->title->SetFont( FF_FONT1, FS_BOLD );

    // Display the graph
    $graph->Stroke();
    ?>

    -----
    Dernière modification par JPL ; 24/10/2020 à 16h29.

  2. #2
    vande545

    Re : [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées

    Bonjour
    De mémoire et seulement de mémoire, strtotime interprète une chaîne
    avec slashs comme un format de date américaine ;
    avec tirets comme un format de date européenne ;
    Ensuite, la syntaxe de strtotime serait plutôt :
    Code PHP:
    strtotime($data,0
    ou
    Code PHP:
    strtotime($data
    Non ?

    Pou la couleur je ne comprends pas. Essaie autre chose que jaune

  3. #3
    umfred

    Re : [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées

    Vérifies que strtotime te renvoie bien la bonne date, sinon il faudra la convertir autrement (peut-être avec date( 'YY-MM-DD HH:II', strtotime($data[0]))
    Ensuite, tu ne les as pas définies comme étant l'axe X => $graph->xaxis->SetTickLabels($ws_dt);
    Pour les couleurs, c'est étrange, essaie en passant par la code hexa de la couleur (jaune = "#ffff00" ; blue = "#0000ff") si tu ne l'as pas déjà fait.

  4. #4
    Pollux32

    Re : [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées

    Bonjour à vous deux

    Merci pour vos réponses.
    J'ai lancé un appel à l'aide sur plusieurs forums, et vous êtes les seuls à m'avoir répondu !

    Alors, pour les dates, je ne passe plus par strtotime (qui me gonfle grave). Je fais simplement « $ws_dt[ $i ] = $data[ 0 ]; »

    Mais pour les couleurs, rien ne fonctionne. J'ai même essayé l'exemple « officiel » https://jpgraph.net/download/manuals...example23.html, et il se fout pas mal des couleurs que je lui demande, que ce soit par nom, par rgb ou par hexadécimal.

    Puis je me suis posé la question de savoir si cela ne venait pas de mon serveur local d'évaluation (Wampserver64), mais non, cela dysfonctionne chez OVH

    Avez-vous le même problème de votre côté ?

    Encore un grand merci pour vos retours, je me sens moins seul

  5. A voir en vidéo sur Futura
  6. #5
    Pollux32

    Re : [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées

    (je me demande vraiment pourquoi on est limité à 5 minutes pour éditer un message !)
    Puis je me suis posé la question de savoir si cela ne venait pas de mon serveur local d'évaluation (Wampserver64), mais non, cela dysfonctionne chez OVH
    Lire plutôt « Puis, je me suis posé la question de savoir si cela ne venait pas de mon serveur local d'évaluation (Wampserver64)... mais non, cela dysfonctionne aussi chez OVH ! »

  7. #6
    vande545

    Re : [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées

    Toujours pas de nouvel élément mais pour info et à titre personnel, je n'utilise plus JPGraph.
    Je lui préfère HTML5/Javascript et CANVAS pour ce genre d'exercice.
    ça évite de passer par un serveur PHP, donc ça fonctionne en fichier local dans n'importe quel navigateur moderne.

  8. #7
    umfred

    Re : [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées

    Je viens de tomber sur ce forum https://www.developpez.net/forums/d1...uleur-legende/ qui évoque l'ajout de la ligne $graph->graph_theme = null; juste après la création du graph.

    Je suis aussi tombé sur cette page https://jpgraph.net/download/manuals...l/ch29s02.html qui dit que l'appel à $graph->add($plot) réinitialise la configuration du graphe et le thème par défaut est utilisé, donc il faudrait ajouter les plots au graphe avant de les personnaliser.

    Donc 2 pistes à tester.

  9. #8
    Pollux32

    Re : [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées

    Merci pour l'info, vande545

  10. #9
    Pollux32

    Re : [PHP] & [JPGRAPH] Quelques difficultés avec jpgraph et de nombreuses barres cumulées

    Merci @unfred et bingo !

    Tant qu'à faire, j'ai utilisé les deux astuces.

    Voilà l'exemple réécrit
    Code PHP:
    <?php // content="text/plain; charset=utf-8"
    require_once( '../jpgraph/jpgraph.php' );
    require_once( 
    '../jpgraph/jpgraph_bar.php' );

    setlocaleLC_ALL'et_EE.ISO-8859-1' );

    $data1y = array( 12819310);
    $data2y = array( 8211714);

    // Create the graph. These two calls are always required
    $graph = new Graph310200 );

    // Create the bar plots
    $b1plot = new BarPlot$data1y );
    $b2plot = new BarPlot$data2y );
    // Create the grouped bar plot
    $gbplot = new AccBarPlot( array( $b1plot$b2plot ) );

    // ...and add it to the graPH
    $graph->Add$gbplot );

    $graph->graph_theme null;

    $graph->SetScale"textlin" );

    $graph->SetShadow();
    $graph->img->SetMargin40302040 );


    // formatage
    $b1plot->SetFillColor"orange" );
    $b2plot->SetFillColor"red" );

    $graph->title->Set"Accumulated bar plots" );
    $graph->xaxis->title->Set"X-title" );
    $graph->yaxis->title->Set"Y-title" );

    $graph->title->SetFontFF_FONT1FS_BOLD );
    $graph->yaxis->title->SetFontFF_FONT1FS_BOLD );
    $graph->xaxis->title->SetFontFF_FONT1FS_BOLD );

    // Display the graph
    $graph->Stroke();
    ?>
    Dernière modification par JPL ; 24/10/2020 à 16h30.

Discussions similaires

  1. Mezzanine avec des barres en acier
    Par classic25 dans le forum Bricolage et décoration
    Réponses: 9
    Dernier message: 16/01/2017, 11h40
  2. [Evolution] Evo-Devo Quelques difficultés...
    Par invite43dd87ea dans le forum Biologie
    Réponses: 18
    Dernier message: 05/06/2008, 15h44
  3. mon sujet de tpe est sur le THC j ai quelques difficultés
    Par invite8232e119 dans le forum TPE / TIPE et autres travaux
    Réponses: 9
    Dernier message: 13/11/2004, 20h14