为图形对象添加透明度
什么是透明度?
图形对象的透明度决定您可以透视对象的程度。通过为图形对象添加透明度,您可以自定义图的外观,或者显示对象本来被隐藏的细节。下表显示了不透明曲面和半透明曲面之间的区别。
不透明对象 | 半透明对象 |
---|---|
|
|
支持透明度的图形对象
可以使用 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
创建具有透明度的条形图
通过将条形序列对象的 FaceAlpha
属性设置为介于 0 和 1 之间的值,创建半透明的条形图。网格线的显示方式。
month = 1:5; sales = [10 25 85 35 16]; bar(month,sales,'FaceAlpha',.5) grid on
创建具有透明度的散点图
创建使用蓝色半透明标记的散点图。然后添加使用红色半透明标记的第二个散点图。通过设置散点序列对象的 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
使用 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')
更改补片对象透明度
使用 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')
另请参阅
alpha
| alphamap
| alim
| scatter
| bar
| image
| surf
| patch
| area