我之前看过这个问题,但似乎没有解决方案,所以我只是想知道它是否完全可能.
我在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)
为此现在工作.花了一个小时搞清楚这个,所以以为我会把它传递给:)
您可以使用PatchInLegend = findobj(BL, 'type', 'patch');在图例中查找修补程序对象.然后,您可以使用set(PatchInLegend, 'facea', 0.5)它们设置透明度来设置透明度.
在透明之前

透明后

所以颜色会发生变化,看起来确实好多了.
| 归档时间: |
|
| 查看次数: |
10201 次 |
| 最近记录: |