Moyenne fausse

Un problème, une question sur la partie PHP des graphiques

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

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

Moyenne fausse

Message par JP54 » 21 févr. 2015, 15:04

Bonjour les amis,
Je voulais vos avis sur un graphique qui fonctionne mais dont le température moyenne annuelle est fausse.
Cela fait un petit moment que j'ai remarqué le problème, mais je n'ai pas eu trop le temps de regardé de plus près et de plus je viens de m'apercevoir que Pierre André a le même soucie sur son graphique qui est sensiblement identique au mien.
Le graphique en question est celui-ci
http://www.meteo-jarny.com/graphique-cl ... p-2015.php
Le calcul de la température moyenne dans la partie PHP est la suivante

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])/12;
La moyenne est calculée en faisant la moyenne des températures des 12 mois et si on regarde le graphique on voit nettement qu'elle est fausse par rapport à la moyenne de ce graphique
http://www.meteo-jarny.com/graphique-dy ... -annee.php
Maintenant la question est la suivante:
Faut-il modifier la requête

Code : Tout sélectionner

    $sql = "SELECT tstamp, AVG(t_out_moy), substr(recdateTZ,1,6) AS AnneeMois FROM `MiniMaxidata`WHERE tstamp > '$start' AND tstamp <= '$stop' GROUP BY AnneeMois"; 
ou cette ligne

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])/12;
ou autre chose pour avoir une moyenne annuelle correct
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
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: Moyenne fausse

Message par PascalWMR » 21 févr. 2015, 18:40

Salut JP

C'est normal que ta moyenne soit fausse.
Tu additionne les moyennes mensuelles que tu divise arbitrairement par 12.
Avec ta méthode,

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])/12;
le seul jour ou ta moyenne est juste, c'est le 31 décembre à 23h59


Or en 2015, (fort heureusement , le temps passe vite ;) ) il n'y a que 2 mois d'écoulés mais tu divise quand même la somme de leur moyenne par 12.

Par conséquent, ce calcul est juste (3.3+2.2)/12= 0,4583333333333333 ==> arrondi, ça fait bien 0.5.
Ce qui est faux, c'est la division par 12.
Il faut créer une routine qui, en fonction du mois en cours, divise la somme des moyennes mensuelles des mois écoulés par le nombre de mois écoulés.
Alors (3.3+2.2)/2 = 2.75 ==> 2.8 arrondi.

C'est ce que je fait dans ces graphiques
Pluviométrie moyenne annuelle
Température moyenne annuelle
ou tout autres graphiques faisant des moyennes annuelles.

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: Moyenne fausse

Message par jturlier » 21 févr. 2015, 19:10

Bonjour Pascal et Pascal,
ce qui serait intéressant de savoir, c'est comment les données sont récupérées, car si elles sont dans la DB, on peut tout faire avec une requête et en particulier les moyennes sans avoir à compter les mois.

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

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

Re: Moyenne fausse

Message par JP54 » 21 févr. 2015, 19:34

Tout à fait Pascal, c'est que j'ai déduit.
Oui Jean, les données sont récupérés par la BD
La partie PHP actuelle

Code : Tout sélectionner

$start=mktime(0,0,0,1,1,date("2015"));
    $stop =mktime(23,59,59,12,31,date("2015"));
         
    $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])/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);
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
PascalWMR
Messages : 323
Enregistré le : 16 févr. 2014, 09:28
Localisation : CONFLANS EN JARNISY (F54800)
Contact :

Re: Moyenne fausse

Message par PascalWMR » 22 févr. 2015, 15:11

Salut Pascal

J'ai trouvé un solution à moindre frais pour ton problème.
J'ai tenté de trouver la solution de Jean mais je me suis fait mal à la tête. Le SQL :evil: c'est ma bête noire.

Au début de ton code, tu défini une variable $mec (mois en cours)

Code : Tout sélectionner

$mec= gmdate(n)*1;
puis dans ta ligne de code

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])/12;
, tu remplace le 12 par $mec.

J'ai pas testé ma çà doit marcher.

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: Moyenne fausse

Message par jturlier » 22 févr. 2015, 18:23

Personnellement, j'écrirais, mais vous faites comme vous voulez

$start=mktime(0,0,0,1,1,date("2015"));
$stop =mktime(23,59,59,12,31,date("2015"));

$annee=date("Y"); // il vaut mieux éviter d'avoir à ré-écrire tous les ans l'année en cours
$sql = "SELECT round(avg(outdoortemperature),1) FROM `data`WHERE substr(recdatetz,1,4)='$annee';";
$query = mysqli_query($conn,$sql);
$row = mysql_fetch_row($result);
$Temp_an = $row[0]*1 ;


$sql = "SELECT tstamp, AVG(t_out_moy), substr(recdateTZ,1,6) AS AnneeMois FROM `MiniMaxidata`WHERE tstamp > '$start' AND tstamp <= '$stop' GROUP BY AnneeMois";

et j'enlèverai la ligne plus bas :
$Temp_an = ($Temp[0]+$Temp[1]+$Temp[2]+$Tem.....

L'intérêt, c'est qu'on a ainsi une moyenne véritable : Sum(température)/Nombre d'enregistrements. Il vaut toujours mieux aller chercher les enregistrements où ils sont plutôt que d'essayer de les reconstituer !
Il y a peut être des erreurs de syntaxe car je n'ai pas testé.

Bonne soirée

Jean

Petite remarque : tout le monde n'utilise pas le nom "data" pour la racine des tables, il serait préférable de le définir en temps que constante plutôt que de le coder " en dur " dans les requêtes.
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: Moyenne fausse

Message par JP54 » 22 févr. 2015, 18:46

La solution de Pascal fonctionne, je n'en doutais pas :D
http://www.meteo-jarny.com/graphique-cl ... 2/test.php

Par contre celle de Jean j'ai une erreur sur la ligne 12 et je ne vois pas l'erreur
Jean je laisse la date en dur par ce que je fais le même graphique tous les ans et je garde celui des années précédentes
http://www.meteo-jarny.com/graphique-cl ... /test1.php

Code : Tout sélectionner

    $start=mktime(0,0,0,1,1,date("2015"));
    $stop =mktime(23,59,59,12,31,date("2015"));
     $sql = "SELECT round(avg(outdoortemperature),1) FROM `data`WHERE substr(recdatetz,1,4)='$annee';";
     $query = mysqli_query($conn,$sql);
     $row = mysqli_fetch_row($result);
     $Temp_an = $row[0]*1 ;    
    $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;
	$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);

    ?>
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
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Moyenne fausse

Message par jturlier » 23 févr. 2015, 06:48

Désolé, les copier-coller font parfois faire des erreurs !!

$sql = "SELECT AVG(outdoortemperature) as temp FROM `data`WHERE substr(recdatetz,1,4)='$annee';";
$query = mysqli_query($conn,$sql);
$row = mysql_fetch_row($query);
$Temp_an = $row[0]*1 ;

La solution n'a rien de compliqué, on récupère dans la table data toutes les valeurs de température extérieure qui correspondent à l'année et on fait leur moyenne.

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

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

Re: Moyenne fausse

Message par JP54 » 23 févr. 2015, 17:19

Ne t'excuse pas Jean
J'ai modifié, plus de message d'erreur, le graphique s'affiche bien mais la moyenne annuelle
http://www.meteo-jarny.com/graphique-cl ... /test1.php

Je cherche, je cherche encore et je ne vois mon erreur :!:

Code : Tout sélectionner

$conn=mysqli_connect($server,$user,$pass,$db);

    $start=mktime(0,0,0,1,1,date("2015"));
    $stop =mktime(23,59,59,12,31,date("2015"));
    $sql = "SELECT round(avg(outdoortemperature),1) FROM `data`WHERE substr(recdatetz,1,4)='$annee';";
    $query = mysqli_query($conn,$sql);
    $row = mysqli_fetch_row($query);
    $Temp_an = $row[0]*1 ;  
 
    $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;
	$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);

    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <HEAD>
    <META NAME="SUBJECT" CONTENT="Graphique Vantage Pro Davis">
    <META NAME="DESCRIPTION" CONTENT="graphique dynamique">
    <META NAME="KEYWORDS" CONTENT=" mto, pluie, vent, temprature, temperature, station, Vantage, Davis, Pro, Davis Vantage Pro,pression, UV, soleil,">
    <META NAME="REVISIT-AFTER" CONTENT="5 DAYS">
    <meta http-equiv="X-UA-Compatible" content="IE=9; IE=9" >
    <META NAME="LANGUAGE" CONTENT="FR">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Météo Jarny (54)</title>

         
          <!-- 1. Add these JavaScript inclusions in the head of your page -->
           <script type="text/javascript" src="jquery/jquery.min.js"></script>           
           <script type="text/javascript" src="highcharts/js/highcharts.js"></script> 
           <script type="text/javascript" src="highcharts/js/themes/grid.js"></script>
           <script type="text/javascript" src="highcharts/js/modules/exporting.js"></script>
           <script type="text/javascript" src="jquery/overlib.js"></script>
           <script type="text/javascript" src="jquery/overlib_fade.js"></script>    

    <!--  <script type="text/javascript" src="jquery/overlib.js"></script>
          <script type="text/javascript" src="jquery/overlib_fade.js"></script>  --> 


          <script type="text/javascript"> 
            function comArr(unitsArray) {
            var outarr = [];
            for (var i = 0; i < dTime.length; i++) {
             outarr[i] = [dTime[i], unitsArray[i]];
            }
          return outarr;
        }     
    $(function () {
        var chart;       
             $(document).ready(function() {     
             var highchartsOptions = Highcharts.setOptions(Highcharts.theme);       
             Highcharts.setOptions({
            lang: {
            months: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
            weekdays: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
            shortMonths: ['Jan.', 'Fév.', 'Mars', 'Avr.', 'Mai', 'Juin', 'Juil.', 'Août', 'Sept.', 'Oct.', 'Nov.', 'Déc'],
            exportButtonTitle: "Exporter",
            printButtonTitle: "Imprimer",
            rangeSelectorFrom: "Du:",
            rangeSelectorTo: "A:",
            rangeSelectorZoom: "Période:",
            resetZoom: 'RAZ Zoom',
            resetZoomTitle: 'Initialiser zoom ? 1:1',
            downloadPNG: "Télécharger au format PNG image",
            downloadJPEG: "Téléécharger au format JPEG image",
            downloadPDF: "Télécharger au format PDF document",
            downloadSVG: "Télécharger au format SVG vector image",
            exportButtonTitle: "Exporter image ou document",
            printButtonTitle: "Imprimer le graphique",
            loading: "Chargement...",
            thousandsSep: ""
            }
          });
            chart = new Highcharts.Chart({
                chart: {
             renderTo: 'container',
                  zoomType: 'x',
                    type: 'column',
                    margin: [ 50, 70, 85, 80],
                backgroundColor: {
                linearGradient: [0, 500, 500, 0],
                stops: [
                    [0, 'rgb(176, 176, 176)'],
                        [1, 'rgb(255, 255, 255)']

                    ]
                  },
                },
                title: {
                    text: 'Température moyenne 2015 comparée aux normales 1981-2010'
                },
             subtitle: {
                    text: 'Source: Météo Jarny',
                    x: -20
                },

             credits: {
                text: '© Météo Jarny',
                href: 'http://www.meteo-jarny.com'
             },

                xAxis: {
                    categories: [
                        'Jan',
                        'Fév',
                        'Mar',
                        'Avr',
                        'Mai',
                        'Juin',
                        'Juil',
                        'Août',
                        'Sep',
                        'Oct',
                        'Nov',
                        'Déc',
                        '',
                        'Année'
                    ],
                    labels: {
                        rotation: 0,
                        align: 'center',
                        style: {
                            fontSize: '13px',
                            fontFamily: 'Verdana, sans-serif'
                        }
                    }
                },
                yAxis: [{
                   title: {
                      text: ' température moyenne mensuelle',
                    },
                   labels: {
                        formatter: function() {
                            return this.value +' J.';
                        },
                        style: {
                            color: '#000000'
                        }
                    },
               
                },
    {
                   title: {
                      text: 'Température moyenne annuelle',
                    },
                   labels: {
                        formatter: function() {
                            return this.value +' °C';
                        },
                        style: {
                            color: '#000000'
                        }
                    },
                opposite: true
                }],

                legend: {
                    enabled: true,
                x: 0

                },
    tooltip: {
                pointFormat: '{series.name}: <b>{point.y}</b><br/>',
				valueDecimals: 1,
                valueSuffix: ' °C',
                shared: true
            },
             plotOptions: {
                    column: {
                       grouping: false,
                       shadow: false,
                       
                    }
                },
             
             series: [{
                    name: 'température moyenne mensuelle',
                    data:  comArr(dTemp),
                    pointPadding: -0.2,
					color: {
                   linearGradient: { x1: 0, x2: 0, y1: 0, y1: 1 },
                   stops: [
                   [0, 'rgba(80, 120, 228, .7)'],
                   [1, 'rgba(255, 0, 0, .8)']
                       ]
	                      }
             },{
                    type: 'spline',
                    color: '#ff8c00',
                    name: 'Normale',
                    data: comArr(dNormale),
                lineWidth: 0,
                marker :{
                enbled: true,
                symbol: 'circle',
                radius: 3},
                pointPadding: -0.3
             },{
                  name: 'Ecart',
                id : 'Ecart',
                  type: 'column',
                color: {
                   linearGradient: { x1: 0, x2: 0, y1: 1, y1: 1.5 },
                   stops: [
                      [0, 'rgba(255, 0, 0, .9)'],
                      [1, 'rgba(255, 255, 0, .8)']
                   ]
                },
                  data: comArr(Ecart),
             },{
                    name: 'température moyenne annuelle',
                   color: {
                   linearGradient: { x1: 0, x2: 0, y1: 0, y1: 1 },
                   stops: [
                   [0, 'rgba(56, 53, 253, .7)'],
                   [1, 'rgba(255, 0, 0, .8)']
                       ]
	                      },
				
                    data: [null,null,null,null,null,null,null,null,null,null,null,null,null, <?php echo $Temp_an;?>],
                pointPadding: -0.2,
                yAxis: 1
             },{
                    name: 'Normale',
                    color: '#84e598',
                    data: [null,null,null,null,null,null,null,null,null,null,null,null,null,<?php echo $Normale_an;?>],
                yAxis: 1
       
                }]
            });
        });
     });   
    eval(<?php echo  "'var dTime =  ".json_encode($Time)."'" ?>);
    eval(<?php echo  "'var dTemp =  ".json_encode($Temp)."'" ?>);
    eval(<?php echo  "'var dNormale =  ".json_encode($Normale)."'" ?>);
    eval(<?php echo  "'var dNormale_an =  ".json_encode($Normale_an)."'" ?>);
    eval(<?php echo  "'var dTemp_an =  ".json_encode($Temp_an)."'" ?>);
    eval(<?php echo  "'var Ecart =  ".json_encode($Ecart)."'" ?>);
       
         </script>
        <style type="text/css">
    .style1 {
       text-align: left;
    }
    </style>
        </head>
         <body>
    <table width="500" border="0" align="center">

    <tr>
    <td>   
           <div id="container" style="width: 600px; height: 300px; margin: 0 auto" class="style1"></div>
          <div align="center"></div>
          </td></tr></table>
         </body>
    </html>
     
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
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Moyenne fausse

Message par jturlier » 23 févr. 2015, 18:03

Fais un echo sur ta variable $sql et sur $Temp_an
vas aussi voir dans le répertoire logs de wamp le fichier php_error, tu verras peut-être ce qui se passe
remplace '$annee' par 2015, il te reste encore de nombreuses options pour analyser où est le bug
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

Répondre