带有多个色彩图的matlab图

时间:2017-07-19 08:45:54

标签: matlab colormap

我想用pcolor图创建一个带有轮廓图的图。两者都有不同的颜色图 - 带有“热”的pcolor,带有“灰色”的轮廓。

我更新的Matlab版本可以使用多种颜色图。

代码有效,但即使轴位置同步,两个轴也不会重叠。

enter image description here

%% prepare Data
Data2D = peaks(100);
Data2D = Data2D -min(Data2D(:));
Data2D = Data2D/max(Data2D(:)) * 100;
steps = 0:05:100;

xAxis = 1:size(Data2D,2);
yAxis = 1:size(Data2D,1);

figure(1); clf
ax1 = axes;

hold on;
% 3D flat plot
caxis([0 100]);
cmap = fliplr(jet(1000));
colormap(ax1, cmap(1:800,:));

hplot = pcolor(ax1, xAxis, yAxis, Data2D);
shading flat; % do not interpolate pixels

set(ax1,'XLim',[xAxis(1) xAxis(end)]);
set(ax1,'YLim',[yAxis(1) yAxis(end)]);

% colorbar
hcb = colorbar('location','EastOutside');    
set(hcb, 'Ylim', [0 100]);


%% contour plot
ax2 = axes; linkaxes([ax1,ax2])

colormap(ax2, flipud(gray(1000)));
[C,hfigc] = contour(ax2, xAxis, yAxis, Data2D,steps);

% Hide the top axes
ax2.Visible = 'off';
ax2.XTick = [];
ax2.YTick = [];

set(hfigc, 'LineWidth',1.0);        

hold off;
drawnow

1 个答案:

答案 0 :(得分:1)

如果你没有使用ax2.Visible = 'off',你可能会看到轴'位置是不同的,因为第一轴被压扁以允许第二轴不具有的颜色条的空间。

TL; DR

您需要将位置属性设置为相等

ax2.Position = ax1.Position

演示

你可以用空白数字模拟这个:

1。

% Create figure and first axes, which have a colorbar
figure(1)
ax1 = axes();
colorbar('location', 'eastoutside');

输出:

1

2。

% Add new axes
hold on;
ax2 = axes();

输出(注意第二轴填充第一个+颜色条的空间):

2

3。

% Make the same, so that the second axes also allow for the colorbar
ax2.Position = ax1.Position;

输出(注意显示它们完全重叠的较粗数字):

3