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

MATLAB Discussion :

Graduation h/min/sec des abscisses


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 37
    Points : 38
    Points
    38
    Par défaut Graduation h/min/sec des abscisses
    Bonjour,

    J'ai des set de données qui s'étendent sur plusieurs heures voire sur plusieurs jours. Du coup je voudrais graduer les abscisses en h/min/sec pour rendre la lecture plus facile.
    Jusqu'à présent, soit je mets le temps en seconde il est laborieux de calculer les grandes durées. Soit je le mets en minute ou heure et ce sont les petites durées qui sont moins facilement interprétables.

    Connaissez-vous un moyen pour le faire ? J'ai regardé dans l'aide "axis" sans trouver mon bonheur .

    Merci,
    L'hermine

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    si j'ai bien compris le problème, voir la :
    Comment insérer des dates comme marqueurs des axes d'un graphique ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    Merci Magelan pour la réponse,
    J'ai bien réussi à afficher les abscisses sous format HH:MM:SS avec "datetick".
    Le problème c'est que lorsque je zoome, les "tick" ne s'adaptent pas.
    En gros, les "tick" de 1 h sur l'affichage original. Quand je zoome sur une plage de 10 s, j'ai toujours un "tick" toutes les heures .

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 315
    Points : 52 945
    Points
    52 945
    Par défaut
    C'est expliqué dans la documentation :
    Calling datetick sets the TickMode of the specified axis to 'manual'. This means that after zooming, panning or otherwise changing axis limits, you should call datetick again to update the ticks and labels.
    La solution consiste donc à utiliser le callback ActionPostCallback de la fonction zoom (voir la documentation) et à y insérer un appel à datetick

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    Merci pour la réponse, je progresse, mais ça ne fonctionne toujours pas .

    Bon voilà ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    figure;
    	h = zoom;
    	plot(t,V1,'.')
    	set(h,'ActionPostCallback',@Xdate);
    	set(h,'Enable','on')
    	datetick('x','HH:MM:SS')
    Et j'ai dans le dossier de travail une fonction Xdate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function Xdate()
    	datetick('x','HH:MM:SS');
    En fait je ne sais pas quoi mettre dans cette fonction pour faire ce que je veux...
    Évidemment ça me renvoie :
    Warning: An error occurred during the mode callback.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 315
    Points : 52 945
    Points
    52 945
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function test_zoom
     
    figure
     
    plot(rand(1,15),rand(1,15),'.')
    datetick('x','HH:MM:SS','keeplimits')
     
    h = zoom;
    set(h,'ActionPostCallback',@Xdate);
    set(h,'Enable','on')
     
    function Xdate(obj,event)
     
    datetick('x','HH:MM:SS','keeplimits')

  7. #7
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    sinon y a une fonction toute prete qui fait ca très bien : tlabel

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 315
    Points : 52 945
    Points
    52 945
    Par défaut
    Et sinon la solution que j'ai donnée se simplifie en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function test_zoom
     
    figure
     
    plot(rand(1,15),rand(1,15),'.')
    datetick('x','HH:MM:SS','keeplimits')
     
    zoom;

  9. #9
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    je précise que tlabel fait un zoom "intelligent" :
    j'affiche des données sur un an, en abscisse j'ai des mois
    je zoom, j'ai des jours
    je zoom encore, j'ai des heures
    ...

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    Super ,

    Merci Dut pour l'aide, maintenant ça marche comme je le souhaite.
    Merci le fab pour le lien. La fonction est en effet assez puissante et fonctionne bien pour mon application.


    L'hermine

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

Discussions similaires

  1. Réglage de la graduation de l'échelle des abscisses
    Par bendesarts dans le forum MATLAB
    Réponses: 2
    Dernier message: 31/10/2014, 14h47
  2. Transformer des secondes en format min:sec
    Par rafafa87 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/11/2013, 20h27
  3. modifier l'intervalle de graduation des abscisses
    Par mamour71 dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/12/2011, 10h47
  4. Graduation de l'axe des abscisses
    Par maraval dans le forum MATLAB
    Réponses: 12
    Dernier message: 27/05/2010, 18h25
  5. Convertir des secondes en heure/min/sec
    Par DelphLaga dans le forum Langage
    Réponses: 8
    Dernier message: 26/02/2009, 19h29

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