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

JavaScript Discussion :

Modifier format affichage date d'un axe (graph highcharts)


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Septembre 2016
    Messages : 23
    Points : 16
    Points
    16
    Par défaut Modifier format affichage date d'un axe (graph highcharts)
    Bonjour à tous,

    J'ai un graphique affichant une courbe de températures sur une année. Les jours (abscisse) sont affichés de 1 à 365 mais je dois afficher sur l'axe x du graph en jours calendaires genre "1 mars 2013".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var listeJour = new Array(365);                               // je veux que le graph affiche cela en format "JJ-MM-AAAA"
    	for(x=1;x <= listeJour.length;x++){
    		listeJour[x-1]=x;
    	}
    	var listeValeur= courbeTemp(listeJour, parametresCourbe);

    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
    function (listeJour,listeValeur,titre) {
    	$('#graph_GAI_div').highcharts({
    		title: {
    			text: titre
    		},
    		xAxis: { 
    			categories: listeJour,
     
    			}
    		},
    		yAxis: {
    			title: {
    				text: ''
    			},
    			labels: {
    				formatter: function () {
    					return this.value + '';
    				}
    			}
    		},
    		plotOptions: {
     
    			marker: {
    				radius: 2,
    				lineColor: '#666666',
    				lineWidth: 0.5
    			}
    		},
    		tooltip: {
    		    crosshairs: {
    		        color: 'red',
    		        dashStyle: 'solid'
    		    },
    		    shared:false
    		},	
    		series: [{
    			name: 'temp',
    			lineColor: 'green',
    			marker: {
    				symbol: 'diamond'                
    			},
    			data: listeValeur
    		}]
    	});
    }
    J'ai décidé d'intégrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    labels: {
    	formatter: function () {
    		return listeJour(this.value).format("JJ-MM-AAAA");
    	}
    }
    dans XAxis mais cela ne fonctionne toujours pas. Comment faire. Ai-je oublié une variable de transformation?

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    tu devrais te pencher sur dateTimeLabelFormats et regarder leur exemple
    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
    $(function () {
        $('#container').highcharts({
            xAxis: {
                type: 'datetime',
                dateTimeLabelFormats: {
                    day: '%d/%m/%y'            // <- Modifié ICI
                }
            },
     
            series: [{
                data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
                pointStart: Date.UTC(2016, 0, 1),
                pointInterval: 24 * 3600 * 1000 // one day
            }]
        });
    });

  3. #3
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Septembre 2016
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bonjour à tous,

    J'ai avancé un peu en reconsidérant les termes mal employés qui me perturber (jours julien qui ne sont que des jours ISO8601 version simplifiée!)
    Je vais donc simplifier dans un premier temps.
    voici le code avec commentaires

    l'idée serait de faire correspondre l'affichage que SpaceFrog m'a fourni avec le tableau numero_date. Il y a peut-être des redondances.
    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
     
     
    var numero_jour = new array (365); //simple tableau (d'une ligne pour mes abscisses) de 1 à 365 sensés correspondre aux jours d'une année (avec 1 pour 1 janv 2013)
    	var date_deb = new Date(2013,0,1);// c'est le code de SpaceFrog qui me permet d'afficher les dates que je veux en abscisses
    	var date_fin= new Date(2013,5,30);
    	var current=date_deb;
    	var i=0;
    	while ( current != date_fin){
    	i++
    	 curMonth=current.getMonth();
    	 curDate=current.getDate();
    	 joursCalendaires.push(curDate + " " +tabMonths[curMonth]);
    	 current=new Date(2013,curMonth, curDate+1);
    	 if (curMonth==11 && curDate==31 ){break;}
    	 if (current > date_fin) {break;}
        }
     
    // l'idée serait de faire correspondre l'affichage avec le tableau numero_date 
    // j'ai donc voulu faire un affichage avec dates en faisant la boucle suivante mais il manque des éléments pour fonctionner
     
    	var dates = new DateTime ("d"); //dates qui doivent remplacer numero_jour pour avoir une date affichee dans mon graph
    	for (var i = 1; i <= numero_jour.Length; i++) {
    	    Console.WriteLine(dates.ToString(numero_jour[i-1]=i, CultureInfo.CreateSpecificCulture("fr-FR")));
    	}
    Une idée?

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    ne serais tu pas en train de mélanger tes deux discussions ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2016
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Septembre 2016
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Oui je me rends compte de l'enchevêtrement mais je ne sais plus comment avancer. Je vais décomposer de nouveau les problèmes.

Discussions similaires

  1. [Batch] format affichage date
    Par big1 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 03/10/2014, 12h45
  2. extJS 4 et format de date sur l'axe X
    Par lulug-29 dans le forum Ext JS / Sencha
    Réponses: 2
    Dernier message: 02/01/2012, 13h32
  3. modifier format de date
    Par vince29 dans le forum Langage
    Réponses: 27
    Dernier message: 15/04/2011, 11h05
  4. Format Affichage Date
    Par delcroixf dans le forum IHM
    Réponses: 2
    Dernier message: 28/01/2008, 08h37
  5. Réponses: 1
    Dernier message: 24/05/2007, 16h02

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