我的数据集由三个向量(x、y 和 z)组成。我用 plot3(x,y,z) 将这些值绘制为 3d 图中的点,这很好。我也想在同一个情节中展示一架飞机。为了得到这个图的数据,我对 x 和 y 使用线性回归来得到一个新的 z。
这是它的外观:
(来源:bildr.no)
我希望冲浪只填充一种颜色(比如浅蓝色或灰色)并设置不透明度,使其透明。我怎样才能做到这一点?
创建只有一种颜色和给定透明度值的表面的最简单方法是设置表面对象的“FaceColor”和“FaceAlpha”属性:
hSurface = surf(...your arguments to create the surface object...);
set(hSurface,'FaceColor',[1 0 0],'FaceAlpha',0.5);
此示例将表面颜色设置为红色,并将透明度设置为 0.5。您也可以设置边缘属性(使用“EdgeColor”和“EdgeAlpha”)。
我不清楚你想做什么。当您为冲浪说一种颜色时,您是指完全一种颜色,还是您的意思是您想要灰色阴影?
这里有一些代码可以做很多事情,你可以选择使用哪些行:
x = rand(1,20);
y = rand(1,20);
z = rand(1,20);
[X,Y] = meshgrid(linspace(0,1,10),linspace(0,1,10));
Z = rand(10)*0.1;
clf
plot3(x,y,z,'.');
hold on
h = surf(X,Y,Z)
hold off
%% This will change the color
colormap(copper)
%% This will remove colordata
set(h, 'cdata',zeros(10))
%% This will make transparent
alpha(0.5)
set(hsurface...)
完成 gnovice 的答案,可能需要额外的成分(Matlab R2010b 64):
hSurface = surf(...your arguments to create the surface object...);
set(hSurface, 'FaceColor',[1 0 0], 'FaceAlpha',0.5, 'EdgeAlpha', 0);
使绘制曲面的点对点边缘不可见
我认为@matlabDoug有你需要的东西。该属性cdata
保存颜色数据,该数据获取应用到它的颜色映射。将其设置为与您的表面数据大小相同的数组,该数组中的每个元素具有相同的值,将使您的表面成为一种颜色。使用默认颜色图,将 cdata 中的所有内容设置为零将使表面变为蓝色,将所有内容设置为 1 将使表面变为红色。然后您可以使用 alpha 使其透明。