1.更改图像、填充或曲面的透明度
此示例说明如何修改图像、填充或曲面的透明度。
1.1坐标区框中所有对象的透明度
透明度值称为 alpha 值。使用 alpha
函数设置当前坐标区范围内所有图像、填充或曲面对象的透明度。指定一个介于 0(完全透明)和 1(完全不透明)之间的透明度值。
t = 0:0.1:2*pi;
x = sin(t);
y = cos(t);figure
patch(x,y,'r')
patch(x+0.8,y,'g')
patch(x+0.4,y+0.8,'b')
axis square tight
alpha(0.3)
1.2个别曲面的透明度
曲面的透明度由其 AlphaData
属性定义。将 alpha 数据设置为用于指定曲面的每个顶点透明度的标量值或值矩阵。FaceAlpha
属性指示如何从顶点透明度确定曲面透明度。
[X,Y,Z] = peaks(20);
s2 = surf(X,Y,Z);s2.AlphaData = gradient(Z);
s2.FaceAlpha = 'flat';
1.3个别图像的透明度
与曲面一样,图像的透明度也由其 AlphaData
属性定义。对于图像,将 alpha 数据设置为用于指定图像数据的每个元素透明度的标量值或值矩阵。
例如,使用透明度覆盖两个图像。首先,显示地球的图像。
earth = imread('landOcean.jpg');
image(earth)
axis image
然后,使用透明度将云图层添加到地球图像。
clouds = imread('cloudCombined.jpg');
image(earth)
axis image
hold onim = image(clouds);
im.AlphaData = max(clouds,[],3);
hold off
1.4个别填充的透明度
填充的透明度由其 FaceAlpha
和 FaceVertexAlphaData
属性定义。若要在整个填充上实现单一的透明度,请将 FaceVertexAlphaData
设置为一个介于 0(完全透明)和 1(完全不透明)之间的常量,并将 FaceAlpha
属性设置为 'flat'
。
cla
p1 = patch(x,y,'r');
axis square tight
p1.FaceVertexAlphaData = 0.2;
p1.FaceAlpha = 'flat' ;
若要在整个填充上实现可变的透明度,请将 FaceVertexAlphaData
设置为用于指定填充的每个顶点或每个面的透明度的值矩阵。然后,通过 FaceAlpha
属性指示如何使用 FaceVertexAlphaData
确定面的透明度。如果为顶点指定了 alpha 数据,则必须将 FaceAlpha
设置为 'interp'
。
p1.FaceVertexAlphaData = x';
p1.FaceAlpha = 'interp';
1.5包含纹理映射的透明度
纹理映射将二维图像映射到三维曲面上。通过将 CData
属性设置为图像数据并将 FaceColor
属性设置为 'texturemap'
,可将图像映射到曲面上。
此示例创建地球和云的三维视图。它创建球形表面,并使用纹理映射将地球和云的图像映射到曲面上。
[px,py,pz] = sphere(50);sEarth = surface(py, px ,flip(pz));
sEarth.FaceColor = 'texturemap';
sEarth.EdgeColor = 'none';
sEarth.CData = earth;
hold on
sCloud = surface(px*1.02,py*1.02,flip(pz)*1.02); sCloud.FaceColor = 'texturemap';
sCloud.EdgeColor = 'none';
sCloud.CData = clouds;sCloud.FaceAlpha = 'texturemap';
sCloud.AlphaData = max(clouds,[],3);
hold off
view([80 2])
daspect([1 1 1])
axis off tight
此示例中使用的图像来自 Visible Earth。
致谢:美国国家航空航天局戈达德太空飞行中心图像,由 Reto Stöckli 拍摄(陆地表面、浅水、云)。Robert Simmon 提供增强效果(海洋颜色、合成、三维地球仪、动画)。数据和技术支持:MODIS 土地组;MODIS 科学数据支持团队;MODIS 大气组;MODIS 海洋组附加数据:美国地质调查局 EROS 数据中心(地貌);美国地质勘探局地球遥感弗拉格斯塔夫球场中心(南极洲);美国国防气象卫星计划(城市灯光)。
2.修改 alphamap
每个图窗都有一个关联的 alphamap,它是一组 0 到 1 之间的向量值。默认的 alphamap 包含 0 到 1 范围内的 64 个线性变化值。可以使用图窗的 Alphamap 属性或使用 alphamap 函数来查看或修改 alphamap。
2.1默认的 alpha 映射
默认的 alphamap 包含 0 到 1 范围内的 64 个线性变化值,如下图所示。
am = get(gcf,'Alphamap');
plot(am)
此 alphamap 将最低的 alpha 数据值显示为完全透明,将最高的 alpha 数据值显示为完全不透明。
alphamap函数可以创建一些有用的预定义 alphamap,还可以修改现有 alphamap。例如,
figure;
alphamap('vup')
将图窗的 Alphamap
属性设置为值先增后减的 alphamap:
am = get(gcf,'Alphamap');
plot(am)
您可以使用 increase
或 decrease
选项改变这些值。例如,
alphamap('increase',.4)
将图窗当前 alphamap 中的所有值加上 0.4。重新绘制 'vup'
alphamap 可以看出变化。这些值限制在 [0 1] 的范围内。
am = get(gcf,'Alphamap');
plot(am)
2.2示例 - 修改 alphamap
此示例使用切片平面来查看三维体数据。切片平面使用颜色数据作为 alpha 数据,并使用递减的 alphamap(值范围从 1 到 0):
-
通过计算一个包含三个变量的函数来创建三维体数据。
[x,y,z] = meshgrid(-1.25:.1:-.25,-2:.2:2,-2:.1:2); v = x.*exp(-x.^2-y.^2-z.^2);
-
创建切片平面,将 alpha 数据设置为等于颜色数据,并指定
FaceColor
和FaceAlpha
插值。h = slice(x,y,z,v,[-1 -.75 -.5],[],[0]); set(h,'EdgeColor','none',... 'FaceColor','interp',... 'FaceAlpha','interp') alpha('color')
-
使用不透明度线性递减的 alphamap 并通过将 alphamap 中的每个值增加 0.1 来实现所需的透明度。指定
hsv
颜色图。alphamap('rampdown') alphamap('increase',.1) colormap hsv
此 alphamap 用最小的透明度显示函数的最小值(接近零),用最大的透明度显示函数的最大值。这使您能够透视切片平面,同时保留了零附近的数据。