Цветовой контур отличается от цвета - PullRequest
5 голосов
/ 15 февраля 2012

Я использую pcolor вместе с контурными линиями. Однако значение линий не может быть идентифицировано из графика, как можно видеть на следующем рисунке.

[x y data] = peaks(1000);
data = data / max(max(data));

colorDepth = 1000;
colormap(jet(colorDepth));

hold on;
pcolor(x,y,data); shading flat

[C,hfigc] = contour(x, y, data,[0:0.1:1]);
set(hfigc, ...
    'LineWidth',1.0, ...
    'Color', [1 1 1]);
hold off;
hcb = colorbar('location','EastOutside');

enter image description here

Я бы предпочел, чтобы цвет был в оттенках серого, а линии контуров - в цветах. Однако тогда мне нужна легенда и для контурных линий.

EDIT: Это работает как-то, комбинируя две цветовые карты, но затем цветная полоса показывает обе, что не то, что я хочу. Я бы предпочел иметь цветную полосу с теми же линиями контура, что и на графике.

[x y data] = peaks(1000);
data = data - min(min(data));
data = data / max(max(data));

colorDepth = 1000;

hold on;
caxis([-1 1]);
colormap([gray(colorDepth); jet(colorDepth)]);
hplot = pcolor(x,y,data); shading flat        

[C,hfigc] = contour(x, y, data-1,[-1:0.1:0]);
set(hfigc, 'LineWidth',1.0);
% set(hfigc, 'Color', [1 1 1]);

hold off;
hcb = colorbar('location','EastOutside');

EDIT: Цветовая полоса может быть исправлена ​​с помощью

set(hcb, 'Ylim', [0 1]);

enter image description here

1 Ответ

5 голосов
/ 17 февраля 2012

Помимо решения, представленного уже в вопросе, можно использовать инструменты freezeColors и COLORMAP и COLORBAR для изменения цветовой карты на одном рисунке

addpath('cm_and_cb_utilities');
addpath('freezeColors');

figure(1); clf;
[x y data] = peaks(1000);
data = data - min(min(data));
data = data / max(max(data));

colorDepth = 1000;

hold on;
caxis([0 1]);
colormap(jet(colorDepth));
hplot = pcolor(x,y,data); shading flat        

hcb = colorbar('location','EastOutside');
set(hcb, 'Ylim', [0 1]);
cbfreeze;

freezeColors;

colormap(gray(colorDepth));
[C,hfigc] = contour(x, y, data,[0:0.1:1]);
set(hfigc, 'LineWidth',1.0);

hold off;

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...