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 :

Bar3D et axes X et Y [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    ak enemy
    Invité(e)
    Par défaut Bar3D et axes X et Y
    Bonjour à tous,
    Débutant avec Matlab, je bute sur un problème que semble rencontrer un certain nombre de personnes, la personnalisation des axes X et Y avec un graphique 3D...
    Le but est de lire les données listées dans le xls pour en faire un graphique 3D.
    Avec les commandes suivantes, le résultat est correct, mais n'est pas beau à voir graphiquement

    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
    xlsfile = 'AE_CAC_Plastic_Pipe_MDFE_DriveCycles.xls';
    val = xlsread(xlsfile,'3D Plot TEST');
    x = val(2:end,1);
    y = val(1,2:end);
    z = val(2:end,2:end);
    clear val;
    surf(x,y,z');
    xlim([0 2000]);
    ylim([20 220]);
    xlabel({'P2A rel. (mbars)'},'HorizontalAlignment','right');
    ylabel({'T2A (°C)'},'HorizontalAlignment','left');
    zlabel({'%'});
    title({'TOTO P2A vs. T2A distribution (%)'});
    view([59.5 18]);
    colorbar;
    Le problème vient lorsque j'essaie de tracer le graph avec bar3.
    Si je fais un bar3(z), le graphique se fait bien, mais dans les axes X et Y, les valeurs des numéros de séries sont utilisées, mais pas les valeurs dans les vecteurs X et Y (entre 0 et 2000 pour X et 20 et 220 pour Y).
    Avec bar3(x,z) on arrive à contourner le problème pour un axe, mais il me semble impossible d'avoir les bonnes valeurs sur les deux axes X et Y en même temps....

    J'ai vu que le sujet était déja abordé dans d'autres topics, mais les solutions évoquées ne marchent pas dans mon cas....

    merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    hBars = bar3(y,z);
     
    space = 0.4 * min( diff(x) );
    addOffset = @(xdata, k) x(k) + xdata - k + ...
        [-space*ones(size(xdata,1),2)+0.4  space*ones(size(xdata,1),2)-0.4 ];
     
    arrayfun(@(h, k) set(h, 'XData', addOffset(get(h, 'XData') , k) ), ...
        hBars, 1:numel(x))
     
    set(gca, 'XTick', x(1:2:end))
    xlim('auto')
    Nom : bar3_x_y.png
Affichages : 160
Taille : 38,8 Ko
    Dernière modification par Invité ; 11/04/2014 à 22h19.

  3. #3
    ak enemy
    Invité(e)
    Par défaut
    Merci 1000 fois.
    Avec quelques petites adaptations, c'est parfait !

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

Discussions similaires

  1. [débutant][c++] Axe de rotation caméra
    Par bornibus dans le forum OpenGL
    Réponses: 2
    Dernier message: 28/02/2005, 10h01
  2. Problème d'axes Z
    Par Bob.Killer dans le forum OpenGL
    Réponses: 3
    Dernier message: 17/01/2005, 11h31
  3. Ajusté les Axes d'un graphe en fonction des données rentrée!
    Par Ma2thieu dans le forum Composants VCL
    Réponses: 5
    Dernier message: 09/07/2004, 01h34
  4. Réponses: 3
    Dernier message: 15/04/2004, 08h44
  5. [VB6] Modification des axes d'un composant Chart
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/05/2003, 08h33

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