添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

为图形对象添加透明度

什么是透明度?

图形对象的透明度决定您可以透视对象的程度。通过为图形对象添加透明度,您可以自定义图的外观,或者显示对象本来被隐藏的细节。下表显示了不透明曲面和半透明曲面之间的区别。

不透明对象 半透明对象

支持透明度的图形对象

可以使用 alpha 函数或通过设置对象的透明度属性来控制对象的透明度。有些图形对象支持对面和边使用不同的透明度值。

下表列出了支持透明度的对象及相应的属性。可将属性设置为 [0,1] 范围内的标量值。值 0 表示完全透明,值 1 表示完全不透明,0 和 1 之间的值表示半透明。

支持透明度的图形对象 实现统一透明度的属性
区域 FaceAlpha
EdgeAlpha
条形序列 FaceAlpha
EdgeAlpha
散点序列 MarkerFaceAlpha
MarkerEdgeAlpha
气泡图序列 MarkerFaceAlpha
MarkerEdgeAlpha
直方图 FaceAlpha
二元直方图 FaceAlpha
图曲面 FaceAlpha
EdgeAlpha
基本曲面 FaceAlpha
EdgeAlpha
补片 FaceAlpha
EdgeAlpha
图像 AlphaData

提示

补片、曲面、散点和图像对象支持使用 Alpha 数据来更改整个对象的透明度。有关详细信息,请参阅 使用 Alpha 数据更改透明度

创建具有透明度的区域图

通过为每个区域对象设置 FaceAlpha EdgeAlpha 属性,将两个半透明区域图合并在一起。

x = linspace(0,10);
y1 = 4 + sin(x).*exp(0.1*x);
area(x,y1,'FaceColor','b','FaceAlpha',.3,'EdgeAlpha',.3)
y2 = 4 + cos(x).*exp(0.1*x);
hold on
area(x,y2,'FaceColor','r','FaceAlpha',.3,'EdgeAlpha',.3)
hold off

Figure contains an axes object. The axes object contains 2 objects of type area.

创建具有透明度的条形图

通过将条形序列对象的 FaceAlpha 属性设置为介于 0 和 1 之间的值,创建半透明的条形图。网格线的显示方式。

month = 1:5;
sales = [10 25 85 35 16];
bar(month,sales,'FaceAlpha',.5)
grid on

Figure contains an axes object. The axes object contains an object of type bar.

创建具有透明度的散点图

创建使用蓝色半透明标记的散点图。然后添加使用红色半透明标记的第二个散点图。通过设置散点序列对象的 MarkerFaceColor MarkerEdgeColor 属性来指定标记颜色。通过将 MarkerFaceAlpha MarkerEdgeAlpha 属性设置为介于 0 和 1 之间的标量值来指定透明度。

x = [5 10 11 13 18];
y1 = [40 80 150 80 50];
a1 = 100*[100 50 80 30 50];
scatter(x,y1,a1,'MarkerFaceColor','b','MarkerEdgeColor','b',...
    'MarkerFaceAlpha',.2,'MarkerEdgeAlpha',.2)
axis([0 20 0 200])
x = [2 6 8 11 13];
y2 = [30 40 100 60 140];
a2 = 100*[30 50 30 80 80];
hold on
scatter(x,y2,a2,'MarkerFaceColor','r','MarkerEdgeColor','r',...
    'MarkerFaceAlpha',.2,'MarkerEdgeAlpha',.2)
hold off

Figure contains an axes object. The axes object contains 2 objects of type scatter.

使用 Alpha 数据更改透明度

补片、曲面和图像对象有几个额外的属性可用来更改对象的透明度。

  • 图像 - 为每个图像元素指定不同的透明度值。可通过将 AlphaData 属性设置为与 CData 属性大小相同的数组来指定其属性值。

  • 图曲面和基本曲面 - 为每个面和边指定不同的透明度值。此外,还可以指定对每个面或边是使用单一透明度还是插补透明度。首先,通过将 AlphaData 属性设置为与 ZData 属性大小相同的数组来指定透明度值。然后,通过将 FaceAlpha EdgeAlpha 属性设置为 'flat' 'interp' 来指定单一透明度或插补透明度。

  • 补片 - 为每个面和边指定不同的透明度值。此外,还可以指定对每个面或边是使用单一透明度还是插补透明度。首先,通过将 FaceVertexAlphaData 属性设置为长度等于补片的面数(对于单一透明度)或顶点数(对于插补透明度)的列向量来指定透明度值。然后,通过将 FaceAlpha EdgeAlpha 属性设置为 'flat' 'interp' 来指定单一透明度或插补透明度。

  • 散点图 - 为每个标记指定不同的透明度值。首先,通过将 AlphaData 属性设置为与 XData 属性大小相同的数组来指定透明度值。然后,通过将 MarkerFaceAlpha MarkerEdgeAlpha 属性设置为 'flat' 来指定单一透明度。

可以使用 AlphaDataMapping 属性控制对象如何解释 Alpha 数据值。有关详细信息,请参阅属性说明。

更改曲面图透明度

创建一个曲面并根据 z 数据的梯度更改透明度。通过将 FaceAlpha 设置为 'flat' ,对曲面的每个面使用单一透明度。将曲面颜色设置为蓝色,以显示透明度如何变化。

[x,y] = meshgrid(-2:.2:2);
z = x.*exp(-x.^2-y.^2);
a = gradient(z);
surf(x,y,z,'AlphaData',a,...
    'FaceAlpha','flat',...
    'FaceColor','blue')

Figure contains an axes object. The axes object contains an object of type surface.

更改补片对象透明度

使用 patch 函数绘制一个线条。将 y 的最后一项设置为 NaN ,使 patch 创建一个线条,而非一个闭合多边形。

通过将 FaceVertexAlphaData 属性设置为一个列向量,为每个顶点定义一个透明度值。通过将 AlphaDataMapping 属性设置为 'none' ,将这些值解释为透明度值(0 表示完全透明,1 表示完全不透明)。通过将 EdgeAlpha 属性设置为 'interp' ,在顶点之间进行透明度插值。

x = linspace(1,10,10);
y = sin(x);
y(end) = NaN; 
figure
alpha_values = linspace(0,1,10)'; 
patch(x,y,'red','EdgeColor','red',...
    'FaceVertexAlphaData',alpha_values,'AlphaDataMapping','none',...
    'EdgeAlpha','interp')

Figure contains an axes object. The axes object contains an object of type patch.

另请参阅

| | | | | | | |

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

MathWorks

Accelerating the pace of engineering and science