5

等高線と一緒に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');

ここに画像の説明を入力してください

むしろ、pcolorをグレー値にし、等高線を色にしたいです。ただし、等高線の凡例も必要です。

編集:2つのカラーマップを組み合わせることでなんとか機能しますが、カラーバーに両方が表示されます。これは私が望んでいることではありません。むしろ、プロットと同じ等高線を含むカラーバーが必要です。

[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');

編集:カラーバーはで修正することができます

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

ここに画像の説明を入力してください

4

1 に答える 1

5

すでに質問で提示されている解決策に加えて、ツールfreezeColorsCOLORMAPおよび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;

ここに画像の説明を入力してください

于 2012-02-16T21:40:45.227 に答える