2016-11-01 2 views
0

Lorsque je trace plusieurs fonctions dans une figure 3D (en utilisant surf(my_function)), la couleur par défaut est qu'elle colore chaque petit bit de la surface de la fonction de telle sorte que la couleur corresponde à la hauteur point.Octave/Matlab: Colormap non basé sur la hauteur

Je voudrais changer cela un peu. J'ai plusieurs fonctions que je veux tracer sur la même figure, et la plupart d'entre eux sont séparés un peu dans la direction z, donc ils ont des couleurs différentes (un bas a des nuances de bleu, un haut a des nuances de rouge). Je voudrais garder cela pour la plupart, sauf que la surface de la fonction soit différente de la même couleur, mais que cette couleur change à chaque itération de la boucle que j'ai pour tracer ces fonctions. Dans mon cas particulier, je suis en train de tracer les fonctions d'onde d'une particule dans un puits carré 2D (puits de potentiel infini). Cependant, comme certains niveaux d'énergie (c'est-à-dire, la hauteur z) sont dégénérés, j'ai différentes fonctions d'onde occupant le même z. Je veux les distinguer par leur nuance de couleur, tout en conservant la méthode que les basses vallées de la fonction sont d'une certaine nuance tandis que les hautes vallées sont d'une nuance différente de la même couleur.

+0

' surf (your_function, your_chosen_colors) ' –

+0

En savoir plus: https://fr.mathworks.com/help/matlab/visualize/coloring-mesh-and-surface-plots.html –

+0

Copie possible de [Comment colorer la surface avec un contraste plus fort ] (http://stackoverflow.com/questions/5073865/how-to-color-surface-with-stronger-co ntrast) –

Répondre

3

Vous pouvez définir la couleur pour surf indépendamment: Cela montre une hauteur de pics et la couleur de Sombrero (ne comptez pas sur __osmesa_print__, il est une fonction d'octave interne):

figure ("visible", "off") 
surf (peaks(64), sombrero (64)); 
[az, el] = view(); 
n = 1; 
clear img_stack; 
for nel = el:2:90 
    view (az, nel); 
    drawnow; 
    img_stack (:, :, :, n++) = __osmesa_print__ (gcf); 
endfor 
imwrite (img_stack, "out.gif", "DelayTime", 0.1, "Compression", "lzw") 

peaks with sombreo color, elevation goes from 30° to 90°