如何正确颜色的表面使用冲浪函数在两个不同的颜色?

23日视图(30天)
亲爱的MATLAB用户,
我想颜色表面使用上网功能在两个不同的颜色。我有一个表面定义为 。f (x, y) < = 2,我想用蓝色,而对于f (x, y) > 2,红色。
下面是我的代码和结果。fig.让我满意当我在MATLAB。但当我出口fig. pdf文件,我发现表面的f (x, y) < = 2绘制两次使用两种不同的颜色(红色和蓝色)。我懂,这是正常的,但这不是我想要的。
clearvars;clc;关闭所有;文件关闭所有;格式;格式紧凑的;
x = linspace (-0.5, 0.5, 21);
(X, Y) = meshgrid (X, X);
Z = 2 * (cos(2 *π* X) + cos(2 *π* Y)) + 2;
Z1 = Z;
Z1 (Z1 > = 2) =南;
无花果=图;
ax =轴;
持有;
s1 =冲浪(ax, X, Y, Z);
s2 =冲浪(ax, X, Y, Z1);
集(s1,“线宽”,0.5,“EdgeColor”,“r”,“FaceColor”,' w ');
集(s2,“线宽”,0.5,“EdgeColor”,“b”,“FaceColor”,' w ');
camzoom (ax, 0.5);
视图(ax, [120, 30]);
集(ax,“盒子”,“上”,“PlotBoxAspectRatio”,1,1,1.5);
持有;
这是导出的pdf文件。
我试着画出两个表面的一部分(例如,f (x, y) < = 2和f (x, y) > 2)另外,但我发现两个部分之间的界限并不顺利连接。请参见下面的代码和结果。
clearvars;clc;关闭所有;文件关闭所有;格式;格式紧凑的;
x = linspace (-0.5, 0.5, 21);
(X, Y) = meshgrid (X, X);
Z = 2 * (cos(2 *π* X) + cos(2 *π* Y)) + 2;
Z1 = Z;
Z2 = Z;
Z1 (Z1 > = 2) =南;
Z2 (Z2 < 2) =南;
无花果=图;
ax =轴;
持有;
s1 =冲浪(ax, X, Y, Z2);
s2 =冲浪(ax, X, Y, Z1);
集(s1,“线宽”,0.5,“EdgeColor”,“r”,“FaceColor”,' w ');
集(s2,“线宽”,0.5,“EdgeColor”,“b”,“FaceColor”,' w ');
camzoom (ax, 0.5);
视图(ax, [120, 30]);
集(ax,“盒子”,“上”,“PlotBoxAspectRatio”,1,1,1.5);
持有;
最好的问候,
麒麟。

接受的答案

AndresVar
AndresVar 2022年3月23日
编辑:AndresVar 2022年3月23日
1表面但你如何调整colormap吗
x = linspace (-0.5, 0.5, 21);
(X, Y) = meshgrid (X, X);
Z = 2 * (cos(2 *π* X) + cos(2 *π* Y)) + 2;
%的颜色
C = Z;
C (Z < = 2) = 1;
C (Z > 2) = 1;
%的阴谋
无花果=图;
ax =轴;
s1 =冲浪(ax, X, Y, Z, C);
%的颜色
s1.EdgeColor =“插值函数”;
s1.FaceColor =' w ';
s1.LineWidth = 0.5;
BlueRedColormap = [0, 0, 1, 1, 0, 0);%是红色和蓝色
BlueRedColormap colormap(图);
%漂亮
视图(ax, [120, 30]);
集(ax,“盒子”,“上”,“PlotBoxAspectRatio”,1,1,1.5);
% saveas (gcf RedBlueSurf.pdf);
1评论
麒麟郭
麒麟郭 2022年3月23日
亲爱的AndresVar,非常感谢!这是我到底想要什么。你在一个优雅的方式!

登录置评。

更多的答案(0)

标签

s manbetx 845


释放

R2018a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!