我使用contourf函数创建等高线图:
我想让网格线出现在显示轮廓的平面上。
我遇到了一个解决方案,但它只适用于2D(即在2D中查看轮廓图时),它涉及以下两个命令:
grid on
set(gca,'layer','top');
但是,在3D中查看轴时不会出现网格线。有没有办法简单地做到这一点?
答案 0 :(得分:3)
您可以使用重写网格线的line
对象操作或名为gridxy的小型FEX工具来完成此操作。
例如,让我们重新创建具有相同属性的图形:
figure
set(gcf,'Renderer','OpenGL')
%# plot surface and contour
Z = peaks;
surf(Z), hold on
[~,h] = contourf(Z); %# get handle to contourgroup object
%# change the ZData property of the inner patches
hh = get(h,'Children'); %# get handles to patch objects
for i=1:numel(hh)
zdata = ones(size( get(hh(i),'XData') ));
set(hh(i), 'ZData',-10*zdata)
end
并添加额外的网格线:
v = get(gca);
hg=gridxy(get(gca,'XTick'),get(gca,'YTick'), 'Color',[1,1,1]*0.25,'Linestyle',':');
set(hg,'Zdata',repmat(v.ZLim(1)+eps,[1 numel(get(hg,'Ydata'))]));
但是,是否有理由不使用surfc
?例如:
Z = peaks(20);
surfc(Z);
view(-45, 20);