Matlab 曲面面的渐变颜色

Matlab 曲面面的渐变颜色,matlab,3d,data-visualization,matlab-figure,surface,Matlab,3d,Data Visualization,Matlab Figure,Surface,我有以下MATLAB代码: close all clear all clc edges= linspace(0,1,10); [X,Y] = meshgrid(edges); Z=rand(10); h= surf(X,Y,Z,'FaceColor','none') 我需要在这个表面上画一些脸。坐标为0,0的面应为绿色,坐标为1,1的面应为红色。对角线上的所有面应为黄色 你能帮我画这幅画吗?一种方法是: edges= linspace(0,1,10); [X,Y] = meshgrid(edg

我有以下MATLAB代码:

close all
clear all
clc
edges= linspace(0,1,10);
[X,Y] = meshgrid(edges);
Z=rand(10);
h= surf(X,Y,Z,'FaceColor','none')
我需要在这个表面上画一些脸。坐标为0,0的面应为绿色,坐标为1,1的面应为红色。对角线上的所有面应为黄色


你能帮我画这幅画吗?

一种方法是:

edges= linspace(0,1,10);
[X,Y] = meshgrid(edges);
Z=rand(10);


% Fake some color data
cdata = zeros(size(Z));

for i = 1:size(cdata,1)
    cdata(i,i) = i; 
end

%make a suitable colormap

cm = ones(size(cdata,1), 3);
cm = cm .*[ 1 1 0 ] % everything yellow
cm(1, :) = [1 1 1] % except for 0
cm(2, :) = [1 0 0] % except for 1
cm(end, :) = [0 1 0] % except for 10

ax = axes();
h = surface(ax, X,Y,Z);
h.CData = cdata;
ax.Colormap = cm;

一种方法是:

edges= linspace(0,1,10);
[X,Y] = meshgrid(edges);
Z=rand(10);


% Fake some color data
cdata = zeros(size(Z));

for i = 1:size(cdata,1)
    cdata(i,i) = i; 
end

%make a suitable colormap

cm = ones(size(cdata,1), 3);
cm = cm .*[ 1 1 0 ] % everything yellow
cm(1, :) = [1 1 1] % except for 0
cm(2, :) = [1 0 0] % except for 1
cm(end, :) = [0 1 0] % except for 10

ax = axes();
h = surface(ax, X,Y,Z);
h.CData = cdata;
ax.Colormap = cm;

如果仔细查看该命令,您将看到,您可以设置一个自定义的colormap,然后使用它代替Z数据作为颜色指示器

所以,你只需要设置一个合适的颜色映射。其中一个必须具有与X和Y数据相同的尺寸,并且对于每个数据点,必须指定您选择的[R,G,B]三元组,即[0,0]坐标的[0,1,0],[1,1]坐标的[1,0,0],以及这两个坐标之间的一些对角线插值

幸运的是,你已经有了,看看你的X和Y数据!将两者相加将得到绿色通道的那种对角线插值。与之相反,将给出正确的红色通道。缩放有点损坏,因为您的值大于1.0,但这些值将被剪裁

下面是增强的代码:

边=linspace0、1、10; [X,Y]=网格网格边; Z=10; 厘米:,:,1=X+Y;%红色通道 厘米:,:,2=2-厘米:,:,1;%绿色通道 cm:,:,3=zerosizex;%蓝色通道空 h=表面x,Y,Z,cm;%不需要FaceColor属性 输出如下所示:


希望有帮助

如果仔细查看该命令,您会发现,您可以设置一个自定义的colormap,然后使用它代替Z数据作为颜色指示器

所以,你只需要设置一个合适的颜色映射。其中一个必须具有与X和Y数据相同的尺寸,并且对于每个数据点,必须指定您选择的[R,G,B]三元组,即[0,0]坐标的[0,1,0],[1,1]坐标的[1,0,0],以及这两个坐标之间的一些对角线插值

幸运的是,你已经有了,看看你的X和Y数据!将两者相加将得到绿色通道的那种对角线插值。与之相反,将给出正确的红色通道。缩放有点损坏,因为您的值大于1.0,但这些值将被剪裁

下面是增强的代码:

边=linspace0、1、10; [X,Y]=网格网格边; Z=10; 厘米:,:,1=X+Y;%红色通道 厘米:,:,2=2-厘米:,:,1;%绿色通道 cm:,:,3=zerosizex;%蓝色通道空 h=表面x,Y,Z,cm;%不需要FaceColor属性 输出如下所示:


希望有帮助

嗯。。。在3D中有顶点和面,但在约束中仅指定2个坐标。坐标为0,0的面应为绿色。。。你是说X,Y坐标吗??此外,顶点=点有唯一的坐标,面有多个坐标,它们由多个点链接,因此如果您想要为面着色的标准,则点坐标不是最佳选择。hmmm。。。在3D中有顶点和面,但在约束中仅指定2个坐标。坐标为0,0的面应为绿色。。。你是说X,Y坐标吗??此外,顶点=点具有唯一的坐标,面具有多个坐标,它们由多个点链接,因此,如果需要为面着色的标准,则点坐标不是最佳选择。