В комментариях под ответом на ваш предыдущий вопрос уже была подсказка Луиса. Поскольку правильное оформление цветовой панели немного сложнее, вот полный пример:
% Custom colormap
white = [1 1 1];
yellow = [1 1 0];
orange = [1 0.5 0];
red = [1 0 0];
black = [0 0 0];
custom_map = [white; yellow; orange; red; black];
n_colors = size(custom_map, 1);
% Generate and show sample data; apply custom colormap
a = rand(20, 20);
imagesc(a);
colormap(custom_map);
% Add styled colorbar
vmin = 0;
vmax = 1;
v_range = vmax - vmin;
ticks = v_range*(vmin+1/(2*n_colors)):v_range*(1/n_colors):vmax;
ticklabels = {'white', 'yellow', 'orange', 'red', 'black'};
colorbar('Ticks', ticks, 'TickLabels', ticklabels);
% Also works, and Octave compatible:
% colorbar('ytick', ticks, 'yticklabel', ticklabels);
caxis([vmin, vmax]);
Для правильного выравнивания тиков вы должны включить минимальное и максимальное значения желаемого диапазона значений (vmin
и vmax
в примере), а также сам диапазон (v_range
) и количество цветов (n_colors
).
Вот некоторые результаты (Octave 5.1.0, но также протестированы в MATLAB Online) :
Реализация должна быть достаточно гибкой. Вот те же данные, но для другого vmax = 3
:
Или вот те же данные с двумя дополнительными цветами:
Надеюсь, это поможет!