设置图例的Alpha值(透明度)以匹配MatLab中的绘图中的alpha

use*_*089 6 matlab

我之前看过这个问题,但似乎没有解决方案,所以我只是想知道它是否完全可能.

我在MatLab中有一个条形图并设置了透明度:

B = bar(x,y,'stacked');
set(B(1),'facecolor',[0 0.3906 0]) 
set(B(2),'facecolor',[0.5625 0.9297 0.5625])
ch1 = get(B(1),'child');
set(ch1,'facea',.5)
ch2 = get(B(2),'child');
set(ch2,'facea',.5)
Run Code Online (Sandbox Code Playgroud)

我希望情节中的透明度能够反映在传奇中:

BL = legend ((B([1 2])),{'data1','data2'},'fontsize',10);
Run Code Online (Sandbox Code Playgroud)

但是,图例中的alpha值似乎为1.

有任何想法吗?谢谢.

小智 11

请注意,2014b更新需要稍作修改.有关补丁等的信息似乎现在保存在图例命令的"图标"输出中,因此您需要;

[BL,BLicons] = legend ((B([1 2])),{'data1','data2'},'fontsize',10);
Run Code Online (Sandbox Code Playgroud)

然后

PatchInLegend = findobj(BLicons, 'type', 'patch');
set(PatchInLegend, 'facea', 0.5)
Run Code Online (Sandbox Code Playgroud)

为此现在工作.花了一个小时搞清楚这个,所以以为我会把它传递给:)


Fan*_*Fox 5

您可以使用PatchInLegend = findobj(BL, 'type', 'patch');在图例中查找修补程序对象.然后,您可以使用set(PatchInLegend, 'facea', 0.5)它们设置透明度来设置透明度.

在透明之前

在此输入图像描述

透明后

在此输入图像描述

所以颜色会发生变化,看起来确实好多了.