matlab使用教程(79)—为图形对象添加透明度

1.什么是透明度?

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

不透明对象半透明对象

Opaque surface plot

Semitransparent surface plot

2.支持透明度的图形对象

        可以使用 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 数据更改透明度

3.创建具有透明度的区域图

通过为每个区域对象设置 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.

4.创建具有透明度的条形图

通过将条形序列对象的 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.

5.创建具有透明度的散点图

        创建使用蓝色半透明标记的散点图。然后添加使用红色半透明标记的第二个散点图。通过设置散点序列对象的 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.

6.使用 Alpha 数据更改透明度

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

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

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

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

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

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

7.更改曲面图透明度

        创建一个曲面并根据 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.

8.更改补片对象透明度

        使用 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.

  • 29
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

配电网和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值