0

我正在尝试使下图中第二个子图中的红色带变得透明,不透明度类似于 alpha(0.2)。

http://i.stack.imgur.com/zJjYk.jpg

但是,当我尝试在以下生成红色波段的代码之后调用 alpha(0.2) 时:

Plotha1 = area([datenum(time(11,1),1,1) datenum(time(15,1),1,1)],[1.3*max(SA(:,2)) 1.3*max(SA(:,2))]);
set(Plotha1,'BaseValue',1.3*min(SA(:,2)),'FaceColor','r','LineStyle', 'none');

Plotha2 = area([datenum(time(4,1),1,1) datenum(time(8,1),1,1)],[1.3*max(SA(:,2)) 1.3*max(SA(:,2))]);
set(Plotha2,'BaseValue',1.3*min(SA(:,2)),'FaceColor','r','LineStyle', 'none');

alpha(0.2);

第三个子图像第二个图一样变为空白。

http://i.stack.imgur.com/tjgIT.jpg

生成第三个子图的代码在我的代码中最后出现:

subplot(3,1,3),

W = zeros(T,1);

PlotZeros = plot(datenum(time,1,1),W);
dateFormat = 'yyyy';
datetick('x',dateFormat);
hold on

PlotResid = plot(datenum(time,1,1),Resid);

set(PlotZeros,'Color',[0.5 0.5 0.5]); %grey
set(PlotResid,'Color','blue');

axis([datenum(time(1,1),1,1) datenum(time(end,1),1,1) 1.3*min(Resid) 1.3*max(Resid)])

hold off

我尝试过移动一些东西,以便生成第二个子图的代码最后出现,但它仍然导致第三个子图变为空白。有谁知道如何在不破坏第三个子图的情况下使这些区域系列红带变得透明?

谢谢!

4

1 回答 1

0

您可以尝试使用fillpatch使用“facealpha”属性而不是 area 命令:

% x and y vals define the 4 corners of the rectangle
% (slightly different than "area")

x_vals=[datenum(time(4,1),1,1) datenum(time(8,1),1,1) ...
 datenum(time(8,1),1,1) datenum(time(4,1),1,1)];

y_vals=[1.3*min(SA(:,2)) 1.3*min(SA(:,2)) ...
 1.3*max(SA(:,2)) 1.3*max(SA(:,2))];

Plotha2 = fill(x_vals,y_vals,'red','edgecolor','none','facealpha',0.2);
于 2013-07-16T14:06:21.597 回答