Като се започне от този код и фигура:
clc
clear all
[x, y, z] = peaks(1000);
figure;
p = surf(x,y,z);
shading flat
cm=colormap;
Xm=-7;
XM=8;
caxis([Xm XM])
colorbar
Мога да подчертая стойностите в определен диапазон [Xm XM]
чрез промяна на цвета. Например чрез задаване на червен цвят в този диапазон:
[x, y, z] = peaks(1000);
figure;
p = surf(x,y,z);
shading flat
cm=colormap;
Xm=-7;
XM=8;
caxis([Xm XM])
x1=2;
x2=4;
l1=findnearest(x1,linspace(Xm,XM,length(cm)));
l2=findnearest(x2,linspace(Xm,XM,length(cm)));
cm(l1:l2,:)=repmat([1 0 0],l2-l1+1,1);
colormap(cm)
colorbar
Има ли начин да се направи преходът по-рязък? Може би чрез размазване на цвета близо до преходите?
Редактиране:
Кодът използва findnearest функция
Отговори:
2 за отговор № 1Ако цветовете между тях не са важни, можете да използвате някои прости линейни затъмнения:
n = floor((l2-l1+1)/2);
fade = linspace(0, 1, n)";
cm(l1+n,:) = [1 0 0];
cm(l1:l1+n-1,:)=fade * [1 0 0] + (1-fade) * cm(l1-1, :);
cm(l2:-1:l2-n+1,:)=fade * [1 0 0] + (1-fade) * cm(l2+1, :);