在Matlab中用不同颜色绘制同一图形中的两个函数

时间:2015-11-05 01:27:35

标签: matlab function plot

我想在同一个图中绘制2个函数,以便可视化函数及其约束函数,这样我就可以更好地了解约束函数范围内函数的最大值。

目前,我正在使用ezsurf一次绘制一个函数。

syms x y
ezsurf(5 - x^2 - 1/2*y^2);

我的约束函数是

ezsurf(x + y - 2);

但这仅显示约束函数的图形(第二个)。

是否可以在同一图表中显示两者,最好是用不同的颜色?

1 个答案:

答案 0 :(得分:2)

在第一张图后添加hold on

保持当前轴上的保留图,以便添加到轴的新图不会删除现有图。新图使用基于轴的ColorOrder和LineStyleOrder属性的下一种颜色和线条样式。 MATLAB调整轴限制,刻度线和刻度标签以显示全部数据。

hold off将保持状态设置为off,以便添加到轴的新图清除现有图并重置所有轴属性。添加到轴的下一个绘图使用基于轴的ColorOrder和LineStyleOrder属性的第一种颜色和线条样式。这是默认行为。

持有所有与持有相同。  .....更多here

以下是如何控制每个表面的不同颜色:

colormap([parula(64);gray(64)])

syms x y
h(1)=ezsurf(5 - x^2 - 1/2*y^2);
Z=(get(h(1),'zdata'));
hold on
h(2)=ezsurf(x + y - 2);


m = 64;  % 64-elements is each colormap

cmin = min(Z(:));
cmax = max(Z(:));
% CData for surface1
C1 = min(m,round((m-1)*(Z-cmin)/(cmax-cmin))+1); 
% CData for surface2
C2 = 64+C1;

% Update the CDatas for each object.
set(h(1),'CData',C1);
set(h(2),'CData',C2);

% Change the CLim property of axes so that it spans the 
% CDatas of both objects.
caxis([min(C1(:)) max(C2(:))])

enter image description here