2016-11-01 2 views
0

Когда я рисую несколько функций в трехмерном рисунке (с использованием surf(my_function)), по умолчанию это то, что он окрашивает каждый маленький бит поверхности функции таким образом, что цвет соответствует высоте при этом точка.Octave/Matlab: Colormap не основано на высоте

Я хотел бы изменить это немного. У меня есть несколько функций, которые я хочу построить на одной фигуре, и большинство из них немного отделяются в направлении z, поэтому они имеют разные цвета (низкий имеет оттенки синего, высокий - с красными). Я хотел бы сохранить это по большей части, за исключением того, что поверхность функции имеет разные оттенки одного цвета, но имеет такое изменение цвета на каждой итерации цикла, который у меня есть для построения этих функций.

В моем конкретном случае я рисую волновые функции частицы в двумерной квадратной яме (бесконечная потенциальная яма). Однако, поскольку некоторые уровни энергии (т. Е. Высота z) вырождены, у меня разные волновые функции, занимающие одинаковые z. Я хочу различать их по оттенку цвета, сохраняя при этом метод, при котором низкие долины функции являются определенным оттенком, а высокие долины - другой оттенок одного цвета.

+0

' surf (your_function, your_chosen_colors) ' –

+0

Подробнее: https://uk.mathworks.com/help/matlab/visualize/coloring-mesh-and-surface-plots.html –

+0

Возможный дубликат [Как окрасить поверхность с более сильным контрастом ] (http://stackoverflow.com/questions/5073865/how-to-color-surface-with-stronger-co ntrast) –

ответ

3

Вы можете установить цвет для surf независимо друг от друга: Это показывает высоту от пиков и цвета от сомбреро (не полагаться на __osmesa_print__, это внутренняя функция Octave):

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°

Смежные вопросы