我想用pcolor图创建一个带有轮廓图的图。两者都有不同的颜色图 - 带有“热”的pcolor,带有“灰色”的轮廓。
我更新的Matlab版本可以使用多种颜色图。
代码有效,但即使轴位置同步,两个轴也不会重叠。
%% 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
答案 0 :(得分:1)
如果你没有使用ax2.Visible = 'off'
,你可能会看到轴'位置是不同的,因为第一轴被压扁以允许第二轴不具有的颜色条的空间。
您需要将位置属性设置为相等
ax2.Position = ax1.Position
你可以用空白数字模拟这个:
1。
% Create figure and first axes, which have a colorbar
figure(1)
ax1 = axes();
colorbar('location', 'eastoutside');
输出:
2。
% Add new axes
hold on;
ax2 = axes();
输出(注意第二轴填充第一个+颜色条的空间):
3。
% Make the same, so that the second axes also allow for the colorbar
ax2.Position = ax1.Position;
输出(注意显示它们完全重叠的较粗数字):