我需要两个等值线图来显示阈值,我使用
contourf(X,Y,Z,[-1,-1],'k');
contourf(X,Y,Z,[2,2],'w');
而X和Y是简单的网格。
我看到矩阵Z的值大于-1和大于1,所以我期望在-1和1处有两条线,但我只看到了第一条等高线,我做错了什么?
编辑:这里是一个例子
x = 0:5:180;
y = 0:5:355;
[X,Y] = meshgrid(x,y);
Z = 5*cos(X);
figure(1);## Heading ##
surf(X',Y',Z','EdgeColor','none');
view(2); colorbar;colormap(jet); hold on
contour(X',Y',Z',[-1,-1],'k','LineWidth',1);
contour(X',Y',Z',[2,2],'k','LineWidth',2);
legend('','1','2','Location','northeastoutside');
我看到如果我把两个contour
放在一个新的图中,这两个都被绘制出来了。但是当我使用surf
时,我只看到了[-1,-1]选项。非常感谢
edit 2:使用pcolor
代替surf
(删除,'EdgeColor','none'
)给了我正确的绘图...为什么?有什么变化?
1条答案
按热度按时间baubqpgj1#
contourf不是一个3D绘图函数,它是一个2D绘图函数,所以当你要求绘制等值线时,它总是在z=0处绘制,所以当你设置
view(2)
时,你的surf
绘图是在z〉0的contourf
的“顶部”。从另一个Angular 来看你给出的例子:
你可以在这里看到两条线。
pcolor
打印2D图像,而不是3D曲面,因此它适用于pcolor
或imagesc
。