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 :

[contourf] Echelle de couleurs (colormap) non linéaire


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 45
    Par défaut [contourf] Echelle de couleurs (colormap) non linéaire
    Bonjour,

    Je veux tracer un contourf en utilisant une colorbar non linéaire. Elle aurait par exemple un pas de 0.1 sur [0 1] puis un pas de 1 sur [1 5].
    Le mieux que je puisse obtenir est exposé en dessous. Néanmoins c'est loin d'être parfait, 0.9 et 1 prenne la même couleur et je voudrais que les YTick de la colorbar soit situés aux bornes des intervalles et pas en plein milieu !
    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
     x = [0:0.1:1,2:1:5];
    X = repmat(x,10,1);
    Nx = length(x);
    clim = [min(x) max(x)];
    dx = min(diff(x));
    y = clim(1):dx:clim(2);
    for k=1:Nx-1, y(y>x(k) & y<=x(k+1)) = x(k+1); end 
    cmap = colormap(jet(Nx));
    cmap2 = [...
    interp1(x(:),cmap(:,1),y(:)) ...
    interp1(x(:),cmap(:,2),y(:)) ...
    interp1(x(:),cmap(:,3),y(:)) ...
    ];
    colormap(cmap2)
    contourf(X,x,'linestyle','none');hold on
    colorbar

  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 317
    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 317
    Par défaut
    Une solution "simple" consiste, non pas à modifier l’échelle de couleur, mais à modifier les valeurs des données à tracer.

    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
    x = [0:0.1:1 2:1:5];
     
    nc(1) = 40; % nombre couleurs premier intervale
    nc(2) = 20; % nombre couleurs second intervale
     
    figure
    colormap(jet(nc(1)+nc(2)));
     
    xx = x;
     
    % Passage intervale [0 1] vers [1 nc(1)]
    idx = x<1;
    xx(idx) = xx(idx)*(nc(1)-1)+1;
     
    % Passage intervale [1 5] vers [nc(1) nc(1)+nc(2)]
    idx = ~idx;
    xx(idx) = xx(idx)-min(xx(idx));
    xx(idx) = xx(idx)/max(xx(idx));
    xx(idx) = xx(idx)*nc(2)+nc(1);
     
    % Modification des valeurs a afficher
    XX = repmat(xx,10,1);
    contourf(XX,xx,'linestyle','none');
     
    caxis([0 nc(1)+nc(2)])
    c = colorbar;
     
    % Modification esthetique de l'echelle de couleur
    yt = get(c,'ytick');
    yt(yt<=nc(1)) = yt(yt<=nc(1))/nc(1);
    yt(yt>nc(1)) = (yt(yt>nc(1))-nc(1))/nc(2)*max(x);
    set(c,'yticklabel',num2str(yt(:),'%.1f'));
    C'est l'idée...
    Images attachées Images attachées  

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 45
    Par défaut
    Merci ça fournit exactement le rendu voulu !

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

Discussions similaires

  1. Axes des couleurs non linéaire
    Par _vinc dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 15/10/2012, 02h35
  2. [Tableaux] Echelle des couleurs dynamique
    Par louveteau02 dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2007, 09h13
  3. Réponses: 1
    Dernier message: 14/02/2007, 11h12
  4. [Perf] Performances non linéaires
    Par esteban dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/11/2006, 22h56
  5. couleur noir non foncés pendant l'impression
    Par awax dans le forum Delphi
    Réponses: 2
    Dernier message: 20/05/2006, 11h25

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