Установить для различных частей map'а в Матлабе разный цвет

Brina

Точнее, не разный цвет, а различную цветовую шкалу. Это можно? И, если можно, то как?..

Brina

Map — не карта географическая, а распределение чего-то в коррдинатах XY, и это что-то цветом задается.

Vlad128

) Несколько раз вызывать эту функцию не вариант?
2) Если нет, то можно просто задать разные карты высот для разных диапазонов и соответственно сместить значения в необходимой области.

Brina

Несколько раз вызывать эту функцию не вариант?
Пытаюсь, но рисует всегда последним цветом... Или я что-то не так делаю:

subplot(1,2,1);axes('View',[0 90])
subplot(1,2,1);hold on
subplot(1,2,1);mesh(psi(:,1:n_greenlmbd(:,1:n_greenS(:,1:n_green;colormap(CS_green)
subplot(1,2,1);mesh(psi(:,n_green:n_redlmbd(:,n_green:n_redS(:,n_green:n_red;colormap(CS_red)

Brina

Если нет, то можно просто задать разные карты высот для разных диапазонов и соответственно сместить значения в необходимой области.
А вот это интересная идея. Буду думать...

Vlad128

А, я наверное все забыл и colormap — это свойство осей. Тогда второй вариант.

Brina

И так пока хреново получается... но надежда есть...

Evgewkin

Вот вариант с "объединением" двух colormaps в одну.
function h = multimap(X1, Y1, Z1, M1, X2, Y2, Z2, M2)
%MULTIMAP: make two meshes with different colormaps
%
% X1, Y1, Z1, M1: the first mesh data and colormap
% X2, Y2, Z2, M2: the second mesh data and colormap
%
% Usage
% [X1,Y1] = meshgrid(-3:.125:3);
% Z1 = peaks(X1,Y1) + 10;
% M1 = hot(64);
% [X2,Y2] = meshgrid(-3:.125:3);
% Z2 = - peaks(X2,Y2) - 10;
% M2 = cool(64);
% h = multimap(X1, Y1, M1, X2, Y2, M2)
%% plot separately for comparison
% figure
% mesh(X1, Y1, Z1); colormap(M1);
% figure
% mesh(X2, Y2, Z2); colormap(M2);


cindex1 = getci(Z1, M1);
cindex2 = getci(Z2, M2) + size(M1, 1);

h1 = mesh(X1,Y1,Z1, cindex1);
set(h1, 'CDataMapping','direct');
hold on
h2 = mesh(X2,Y2,Z2, cindex2);
set(h2, 'CDataMapping','direct');
colormap( [M1; M2]);
h = [h1 h2];

function cindex = getci(Z, M)
%GETCI: helper function to get color index
%
cmin=min(Z(;
cmax=max(Z(;
m = size(M, 1);
cindex = fixZ-cmin)/(cmax-cmin)*m);

Brina

Спасибо, интересный вариант.
Оставить комментарий
Имя или ник:
Комментарий: