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 :

Changement axe des x d'un graphique


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Changement axe des x d'un graphique
    Bonjour,
    Je dois faire un graphique comprenant des données trimestrielles et lorsque je lance le code ci-dessous, l'axe des X commence par 0 et non par la première date de mon échantillon.
    Quelle transformation dois-je faire afin d'obtenir "2008.Q1" à la place du 0 (graphique et bdd en annexe)(1ère colonne de la bdd = année; 2ème colonne de la bdd = n° semestre).

    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
    close all
    clear all
    clc;
     
    %Import data
    data = importdata('GDP.csv');
    N = length(data.data);
    year = data.data(:,1);
    quart = data.data(:,2);
    gdp = data.data(:,3);
     
     
    %Create the variable for the GDP growth
    for i=2:N;
        growth(i) = (gdp(i)-gdp(i-1))/gdp(i-1);
    end;
     
    %Plot the time series for GDP and GDP Growth
    f=figure;
    set(gcf,'color','w');
    subplot(2,1,1);
    plot(gdp,'-r');
    subplot(2,1,2);
    plot(growth,'-r');
    Ci-joint, voici ma base de donnée et graphique (si jms)
    https://mon-partage.fr/f/Mp7RXPLZ/
    https://mon-partage.fr/f/JOlTJkLD/
    En vous remerciant énormément pour votre aide!
    Student90

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    %Plot the time series for GDP and GDP Growth
    figure
    set(gcf,'color','w');
    s(1) = subplot(2,1,1);
    plot(gdp,'-r');
    s(2) = subplot(2,1,2);
    plot(growth,'-r');
     
    xt = strcat(num2str(year), '.Q',  num2str(quart));
    set(s, 'XTick', 1:numel(gdp), 'XTickLabel', xt)
    Il faudra ensuite incliner les étiquettes qui se superposent.

    Depuis la version R2014b de MATLAB, on peut directement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(s, 'XTickLabelRotation',45)
    Voir la FAQ pour les solutions concernant les versions précédentes de MATLAB : Comment incliner les labels des repères des axes abscisses d'un graphique ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Super, ca marche

    Merci beaucoup pour la réponse ultra rapide !

    Cependant, j'ai juste une question pour la mise en forme car Matlab insère toutes les dates et si mon échantillon est grand, elles se chevauchent toutes et cela devient illisible.

    Il y a t'il la possibilité de faire un pas. Genre, tous les 5 ans, tu m'insères la date "2008.Q1"... ?

    En tous cas, merci vraiment pour votre aide !

    Student90

  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 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xt = strcat(num2str(year(1:4:end)), '.Q',  num2str(quart(1:4:end)));
    set(s, 'XTick', 1:4:numel(gdp), 'XTickLabel', xt)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2013
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Merci infiniment !

    Student

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Au lieu d'ouvrir un sujet identique je me permet de demander ici, car en fait c'est exactement ce que je veux faire.
    Sauf que je ne comprends pas tes deux lignes de code Dut, notamment le "year" :/

    Edit : J'ai vu que year est une fonction, mais dans mon cas je ne peux pas passer par elle

    Je voudrais faire pareil que lui, mais en affichant qu'une valeur sur l'axe des x toutes les 12 valeurs..

    Merci de votre aide

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    C'est bon j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xt = (reslt(1:12:num));
    set(gca, 'XTick', 1:12:num, 'XTickLabel', xt)
    Avec num la taille de mon axe des X.

    (Monologue désolé)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/04/2010, 16h50
  2. [XL-2007] Report d'une valeur sur l'axe des ordonnées d'un graphique
    Par cynoq dans le forum Excel
    Réponses: 10
    Dernier message: 11/01/2010, 12h01
  3. l'axe des abscices dans le graphique
    Par sissi_28 dans le forum IHM
    Réponses: 1
    Dernier message: 20/04/2009, 10h23
  4. nommer l'axe des abcisses sur un graphique
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/12/2007, 17h59
  5. Orienter le texte de l'axe des abscisses d'un graphique
    Par The Niceman dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/10/2007, 13h10

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