Date décalée sur xAsis

Ce forum est dédié aux discussions qui concernent les graphiques réalisés avec la librairie Highcharts, Une question, un bug ?

Modérateurs : jturlier, Météo Villarzel

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Date décalée sur xAsis

Message par jturlier » 14 déc. 2014, 18:39

Bonsoir,
Question de procédure du forum :

Quand les problèmes sont résolus personne ne met-il à jour le titre sur le premier post du sujet pour indiquer [Résolu] ?

Bonne soirée

Jean
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

Avatar du membre
Météo Villarzel
Administrateur du site
Messages : 524
Enregistré le : 06 févr. 2014, 09:48
Contact :

Re: Date décalée sur xAsis

Message par Météo Villarzel » 14 déc. 2014, 23:17

Bonjour,

Je viens de tester votre requête, mais ça ne fonctionne pas, le nombre de jours de gel est nettement inférieur à ce qu'il devrais être !!!

Code : Tout sélectionner

 <?php
    // appel du script de connexion
    require("mysqli_connect.php");                     

    $sql = "SELECT substr(recdateTZ,1,4) AS Annee, sum(t_out_mini <= 0) AS NBJG FROM MiniMaxidata WHERE substr(recdateTZ,5,2)='12' GROUP BY 1";  
    $query = mysqli_query($conn,$sql);                    
    $i=0;
    $NBJG02 = array();
    while ($list = mysqli_fetch_assoc($query)) {     

    $Annee[$i]=$list['Annee']*1;
    $NBJG[$i]=$list['NBJG']*1;

    $NBJG02[] = array($Annee[$i],(float)$NBJG[$i]);

    $i++;
    }    
    ?>
De plus je ne comprends pas le = '11'
WHERE substr(recdateTZ,5,2)='11'

Si je laisse 11 je n'ai aucun jour de gel en 2014, je dois mettre 12, mais le résultat ne corresponds pas quand même

http://www.boock.ch/meteo/graphiques_ph ... el_ans.php

A+
Station Vantage Pro2+ avec station agricole - Weatherlink - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows 7/64
Graphique dynamique à partir d'une bd MySql - VP2SQL

Image

Avatar du membre
Météo Villarzel
Administrateur du site
Messages : 524
Enregistré le : 06 févr. 2014, 09:48
Contact :

Re: Date décalée sur xAsis

Message par Météo Villarzel » 14 déc. 2014, 23:28

OUPS :roll:

J'ai compris, c'est pas le total par ans, mais par mois,

On comprends vite en Suisse si on nous explique longtemps :lol:

Voilà, donc pour le total par année
WHERE substr(recdateTZ,1,4)

A+
Station Vantage Pro2+ avec station agricole - Weatherlink - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows 7/64
Graphique dynamique à partir d'une bd MySql - VP2SQL

Image

Avatar du membre
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: Date décalée sur xAsis

Message par PascalWMR » 15 déc. 2014, 17:46

Salut Pierre-André
Météo Villarzel a écrit :OUPS :roll:

J'ai compris, c'est pas le total par ans, mais par mois,

On comprends vite en Suisse si on nous explique longtemps :lol:

Voilà, donc pour le total par année
WHERE substr(recdateTZ,1,4)

A+
Oui avec cette requête, JP voulait afficher le nombre de jours de gel d'un mois donné pour toutes les années. Donc le 11 sert à extraire tous les mois de novembre de toutes les années présente dans la BDD.

Par contre, si tu veux le nombre de jours de gel sur toute l'année et pour toutes les années, tu supprime simplement la condition where.

A+
Pascal
Station VP2Plus, Windows 10 64 bits,WeatherLink 6.0.5, VP2SQL, Graphiques Dynamiques à partir d'une BDD MySQL
Météo Conflans-en-Jarnisy
Image

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Date décalée sur xAsis

Message par jturlier » 15 déc. 2014, 22:24

Bonsoir,
je pense que si ça avait été mon site, j'aurais réalisé un script qui reprenne tous les mois et tous les types de valeurs. Le texte de la requête aurait été un peu plus long, on aurait sorti les différentes valeurs pour les douze mois c'est à dire douze lignes (ou treize pour le total grâce au UNION de Pascal). Cela aurait fait créer deux boucles en PHP et rien de plus.
Personnellement, je n'aime pas multiplier les scripts et les requêtes quand on peut l'éviter. L'inconvénient pour quelqu'un qui ne fait pas trop de scripts c'est qu'il y a beaucoup plus de variables à gérer, donc la façon de les nommer est importante pour ne pas se mélanger les crayons.
D'un point de vue temps de réponse, sur cette partie initiale du code, on aurait eu quelques millisecondes de plus et c'est tout. Par contre le passage d'un mois à l'autre ou d'un type de valeur à l'autre aurait été amélioré puisque les données sont déjà présentes.
Je pense aussi que ce serait plus formateur que de faire 12 requêtes par type de valeur. Je sais que c'est peut-être un challenge, mais ne faire que des choses simples n'aide pas à progresser !
Il n'y a rien de compliqué là dedans, seulement un peu de réflexion préliminaire et de soin à apporter à la réalisation ... et en plus le code est écrit à 80%.
Alors on se lance ou on se dégonfle ?? :D :D :) :) :( :(

@+

Jean
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

Avatar du membre
Météo Villarzel
Administrateur du site
Messages : 524
Enregistré le : 06 févr. 2014, 09:48
Contact :

Re: Date décalée sur xAsis

Message par Météo Villarzel » 15 déc. 2014, 22:53

jturlier a écrit :Alors on se lance ou on se dégonfle ?? :D :D :) :) :( :(
Pffffffff..... moi je suis déjà à plat :o

tu entends quoi par " un script qui reprenne tous les mois et tous les types de valeurs" je ne visualise pas le graphique final.

A+
Station Vantage Pro2+ avec station agricole - Weatherlink - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows 7/64
Graphique dynamique à partir d'une bd MySql - VP2SQL

Image

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Date décalée sur xAsis

Message par jturlier » 16 déc. 2014, 08:58

Salut Pierre-André,
Pour la visualisation, cela dépend de la façon dont on souhaite présenter les choses, soit un graphique par page par mois comme le graphique que présentait JP avec un sélecteur de mois et un sélecteur de type de données, soit l'ensemble des types de valeurs (température, humidité, pluvio, éolien...) pour chaque mois. Je pencherai (mais c'est personnel ) pour une page de graphique d'un type (12 graphes / page) avec un sélecteur pour afficher le type de valeurs que l'on souhaite. La réalisation en est plutôt simple. L'ultimum serait en fait 1 histogramme par type de valeur, sur lequel on présenterait 12 colonnes avec dans chaque colonne, les années juxtaposées, cela permettrait de comparer instantanément un même type de valeurs par mois et par année, mais là il s'agit d'un challenge, non pas sur la partie récupération des données et conversion Variables PHP => variables JS, ça c'est maitrisé , mais sur la réalisation des graphiques... toujours le même écueil : le nombre de variables et la complexité de la structure de chaque variable dans Highchart et les ( , { , [ , virgules qu'il ne faut ni oublier ni doubler.
Pour ceux qui ne savent pas, il existe dans Firefox une barre d'outils (Web developper) qui permet de voir immédiatement toutes les erreurs de code html, JS, css... et bien d'autres choses. C'est particulièrement utile en Javascript puisque cela pointe directement l'erreur.
Je ne sais pas si tu te souviens, sur mon site MeteOzoir, j'utilisais des histogrammes pour ce type de données, l'idée était là, on n'avait pas encore ni Highchart ni Highstock, et je les avais faites avec jpgraph, mais j'aurai pu peaufiner la réalisation (par exemple, corriger les erreurs de titre)!
bighumid7.jpg
D'autre part, je pense quand même qu'il vaut mieux concentrer un peu les représentations car plus on a de pages, moins les visiteurs naviguent, c'est d'ailleurs pour cette raison et pour titiller un peu les membres du forum que j'ai fait cette suggestion.

Donc je ne ménagerai pas mes encouragements à ceux qui auront les guts ( traduction polie : le cran... mais il en existe une autre que vous devinerez)

Jean
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Date décalée sur xAsis

Message par JP54 » 16 déc. 2014, 19:09

C'est une bonne idée, mais il ne faut pas trop de donnés différentes sur le même graphiques, j'ai eu des retours il y quelques temps de personnes ne comprenant pas certains de mas graphiques avec 4 ou 5 donnés.
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

JP54
Messages : 331
Enregistré le : 15 févr. 2014, 06:44
Localisation : JARNY Meurthe-et-Moselle (54) Région Lorraine
Contact :

Re: Date décalée sur xAsis

Message par JP54 » 04 janv. 2015, 18:19

Toujours sur mes graphique après une petit pause,je suis en train de faire le graphique des températures moyenne mensuel et annuel.
http://www.meteo-jarny.com/graphique-cl ... p-2004.php

Vous pouvez le constaté, j'ai un petit problème avec la température moyenne annuelle, c'est pas la moyenne qui s'affiche, mais la somme.

Voici la partie PHP

Code : Tout sélectionner

    $start=mktime(0,0,0,1,1,date("2004"));
    $stop =mktime(23,59,59,12,31,date("2004"));
         
    $sql = "SELECT tstamp, AVG(t_out_moy), substr(recdateTZ,1,6) AS AnneeMois FROM `MiniMaxidata`WHERE tstamp > '$start' AND tstamp <= '$stop' GROUP BY AnneeMois"; 
    $query = mysqli_query($conn,$sql);                   
    $i=0;
    while ($list = mysqli_fetch_assoc($query)) {     
    if (date("I",time())==0) {
       $time[$i]=($list['tstamp']+3600)*1000;
       }
    else {
       $time[$i]=($list['tstamp']+7200)*1000;
      }

    $Temp[$i]=$list['AVG(t_out_moy)']*1;

       if (date("m",$time[$i]/1000)==1) {$NormaleMensuelle[$i]=1.5;}
       elseif (date("m",$time[$i]/1000)==2) {$NormaleMensuelle[$i]=2.5;}
       elseif (date("m",$time[$i]/1000)==3) {$NormaleMensuelle[$i]=6.2;}
       elseif (date("m",$time[$i]/1000)==4) {$NormaleMensuelle[$i]=9.5;}
       elseif (date("m",$time[$i]/1000)==5) {$NormaleMensuelle[$i]=13.7;}
       elseif (date("m",$time[$i]/1000)==6) {$NormaleMensuelle[$i]=16.6;}
       elseif (date("m",$time[$i]/1000)==7) {$NormaleMensuelle[$i]=19;}
       elseif (date("m",$time[$i]/1000)==8) {$NormaleMensuelle[$i]=18.6;}
       elseif (date("m",$time[$i]/1000)==9) {$NormaleMensuelle[$i]=14.7;}
       elseif (date("m",$time[$i]/1000)==10) {$NormaleMensuelle[$i]=10.6;}
       elseif (date("m",$time[$i]/1000)==11) {$NormaleMensuelle[$i]=5.4;}
       elseif (date("m",$time[$i]/1000)==12) {$NormaleMensuelle[$i]=2.4;}

    $Ecart[$i]=$Temp[$i]-$NormaleMensuelle[$i];


    $i++;
    }   

    $Normale=array(1.5, 2.5, 6.2, 9.5, 13.7, 16.6, 19, 18.6, 14.7, 10.6, 5.4, 2.4,null,null);
    $Time=array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre","","Année");
    $Temp=array($Temp[0],$Temp[1],$Temp[2],$Temp[3],$Temp[4],$Temp[5],$Temp[6],$Temp[7],$Temp[8],$Temp[9],$Temp[10],$Temp[11],$Temp[12],null,null);
    $Normale_an= 10.1;
    $Temp_an = $Temp[0]+$Temp[1]+$Temp[2]+$Temp[3]+$Temp[4]+$Temp[5]+$Temp[6]+$Temp[7]+$Temp[8]+$Temp[9]+$Temp[10]+$Temp[11]+$Temp[12];
	$Ecart=array($Ecart[0],$Ecart[1],$Ecart[2],$Ecart[3],$Ecart[4],$Ecart[5],$Ecart[6],$Ecart[7],$Ecart[8],$Ecart[9],$Ecart[10],$Ecart[11],$Ecart[12],null);

    ?>
C'est cette ligne qui fait la somme des températures moyennes

Code : Tout sélectionner

 $Temp_an = $Temp[0]+$Temp[1]+$Temp[2]+$Temp[3]+$Temp[4]+$Temp[5]+$Temp[6]+$Temp[7]+$Temp[8]+$Temp[9]+$Temp[10]+$Temp[11]+$Temp[12];
comment faire pour avoir la température moyenne de l'année
Station VP2 Weatherlink 5.8.1 VP2SQL 3.0.0.17 NOAAtable 1.0.0.30 Windows 7 Pro
http://www.meteo-jarny.com/

Avatar du membre
Météo Villarzel
Administrateur du site
Messages : 524
Enregistré le : 06 févr. 2014, 09:48
Contact :

Re: Date décalée sur xAsis

Message par Météo Villarzel » 04 janv. 2015, 18:32

Salut,

voici le code que j'utilise pour ce graphique
http://www.boock.ch/meteo/graphiques_ph ... e_2014.php

pas sûr que ce soit le meilleurs, j'ai pas mal bidouiller entre différents graphiques :lol: mais bon ça fonctionne

Code : Tout sélectionner

<?php
// appel du script de connexion
require("mysqli_connect.php");                     

$sql="select max(tstamp) from data";
$query = mysqli_query($conn,$sql);                  
$list=mysqli_fetch_array($query);

$start=mktime(0,0,0,1,1,date("2014"));
$stop =mktime(0,0,0,12,31,date("2014"));
      
$sql = "SELECT tstamp, AVG(t_out_moy), substr(recdateTZ,1,6) AS AnneeMois FROM `MiniMaxidata`WHERE tstamp > '$start' AND tstamp <= '$stop' GROUP BY AnneeMois";  
$query = mysqli_query($conn,$sql);                   
$i=0;
while ($list = mysqli_fetch_assoc($query)) {      
if (date("I",time())==0) { 
   $time[$i]=($list['tstamp']+3600)*1000;
   } 
else {
   $time[$i]=($list['tstamp']+7200)*1000;
  } 

$t_out_moy[$i]=$list['AVG(t_out_moy)']*1;

   if (date("m",$time[$i]/1000)==1) {$NormaleMensuelle[$i]=0.3;}
   elseif (date("m",$time[$i]/1000)==2) {$NormaleMensuelle[$i]=1.3;}
   elseif (date("m",$time[$i]/1000)==3) {$NormaleMensuelle[$i]=5.3;}
   elseif (date("m",$time[$i]/1000)==4) {$NormaleMensuelle[$i]=8.7;}
   elseif (date("m",$time[$i]/1000)==5) {$NormaleMensuelle[$i]=13.2;}
   elseif (date("m",$time[$i]/1000)==6) {$NormaleMensuelle[$i]=16.6;}
   elseif (date("m",$time[$i]/1000)==7) {$NormaleMensuelle[$i]=18.9;}
   elseif (date("m",$time[$i]/1000)==8) {$NormaleMensuelle[$i]=18.3;}
   elseif (date("m",$time[$i]/1000)==9) {$NormaleMensuelle[$i]=14.3;}
   elseif (date("m",$time[$i]/1000)==10) {$NormaleMensuelle[$i]=9.9;}
   elseif (date("m",$time[$i]/1000)==11) {$NormaleMensuelle[$i]=4.3;}
   elseif (date("m",$time[$i]/1000)==12) {$NormaleMensuelle[$i]=1.4;}

$Ecart[$i]=$t_out_moy[$i]-$NormaleMensuelle[$i];

$i++;
}    

$Normale=array(0.3, 1.3, 5.3, 8.7, 13.2, 16.6, 18.9, 18.3, 14.3, 9.9, 4.3, 1.4,null,null);
$time=array("jan","fev","mar","avr","mai","juin","jui","août","sep","oct","nov","déc","","année");
$t_out_moy=array($t_out_moy[0],$t_out_moy[1],$t_out_moy[2],$t_out_moy[3],$t_out_moy[4],$t_out_moy[5],$t_out_moy[6],$t_out_moy[7],$t_out_moy[8],$t_out_moy[9],$t_out_moy[10],$t_out_moy[11],$t_out_moy[12],null,null);
   $Ecart=array($Ecart[0],$Ecart[1],$Ecart[2],$Ecart[3],$Ecart[4],$Ecart[5],$Ecart[6],$Ecart[7],$Ecart[8],$Ecart[9],$Ecart[10],$Ecart[11],$Ecart[12],null,null);
$Normale_an= 8.9;
$norm_an = ($t_out_moy[0]+$t_out_moy[1]+$t_out_moy[2]+$t_out_moy[3]+$t_out_moy[4]+$t_out_moy[5]+$t_out_moy[6]+$t_out_moy[7]+$t_out_moy[8]+$t_out_moy[9]+$t_out_moy[10]+$t_out_moy[11]+$t_out_moy[12])/12-8.9;
?>

Code : Tout sélectionner

eval(<?php echo  "'var time =  ".json_encode($time)."'" ?>);
eval(<?php echo  "'var dmoyenne =  ".json_encode($t_out_moy)."'" ?>);
eval(<?php echo  "'var dNormale =  ".json_encode($Normale)."'" ?>); 
eval(<?php echo  "'var dNormale_an =  ".json_encode($Normale_an)."'" ?>); 
eval(<?php echo  "'var dnorm_an =  ".json_encode($norm_an)."'" ?>);
eval(<?php echo  "'var Ecart =  ".json_encode($Ecart)."'" ?>); 
Station Vantage Pro2+ avec station agricole - Weatherlink - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows 7/64
Graphique dynamique à partir d'une bd MySql - VP2SQL

Image

Répondre