如何在matlab-plot中将冲浪设置为一种颜色(无渐变)?

时间:2009-01-29 16:03:37

标签: graphics matlab

我的数据集由三个向量(x,y和z)组成。我将这些值绘制为带有plot3(x,y,z)的3d图中的点,这很好。我也想在同一个情节中展示一架飞机。为了得到这个图的数据,我在x和y上使用线性回归得到一个新的z。

它的外观如下:

alt text

我希望冲浪只用一种颜色(比如浅蓝色或灰色)填充并设置不透明度,使其透明。我怎么能这样做?

4 个答案:

答案 0 :(得分:26)

创建仅具有1种颜色和给定透明度值的曲面的最简单方法是设置曲面对象的“FaceColor”和“FaceAlpha”属性:

hSurface = surf(...your arguments to create the surface object...);
set(hSurface,'FaceColor',[1 0 0],'FaceAlpha',0.5);

此示例将表面颜色设置为红色,将透明度设置为0.5。您也可以设置边缘属性(使用'EdgeColor'和'EdgeAlpha')。

答案 1 :(得分:4)

我不清楚你想做什么。当你说冲浪的一种颜色时,你的意思是一种颜色,或者你的意思是你想要灰色阴影?

以下是一些可以执行各种操作的代码,您可以选择要使用的行:

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)

答案 2 :(得分:4)

完成gnovice的回答,可能需要set(hsurface...)中的额外成分(Matlab R2010b 64):

hSurface = surf(...your arguments to create the surface object...);
set(hSurface, 'FaceColor',[1 0 0], 'FaceAlpha',0.5, 'EdgeAlpha', 0);

使绘制曲面的点对点边缘不可见

答案 3 :(得分:1)

我想,

@ matlabDoug有你需要的东西。属性cdata包含颜色数据,可以应用颜色贴图。将其设置为与曲面数据大小相同的数组,并且该数组中的每个元素具有相同的值,将使曲面成为一种颜色。使用默认颜色贴图,将cdata中的所有内容设置为零将使表面变为蓝色,将所有内容设置为1将使曲面变为红色。然后你可以使用alpha来使它透明。