2014-05-16 118 views
4

匹配情節阿爾法我已經看到了這個問題問過,但似乎是無解所以我只是想知道,如果它是在所有可能的。設置傳說的Alpha值(透明度)在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) 

而且我想在情節的透明度,體現在傳說:

BL = legend ((B([1 2])),{'data1','data2'},'fontsize',10); 

然而,出現在傳說中的阿爾法值爲1

任何想法?謝謝。

回答

5

您可以使用PatchInLegend = findobj(BL, 'type', 'patch');找到你的傳奇補丁對象。然後,您可以使用set(PatchInLegend, 'facea', 0.5)設置其透明度來設置其透明度。

之前透明

enter image description here

透明

enter image description here

所以顏色變化後,和它看起來好多了。

10

注意2014b更新需要稍作更改。有關修補程序等的信息現在似乎保留在圖例命令的「圖標」輸出中,因此您需要;

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

然後

PatchInLegend = findobj(BLicons, 'type', 'patch'); 
set(PatchInLegend, 'facea', 0.5) 

這個現在的工作。只花了一個小時搞清楚了這一點,所以想我應該把它傳遞:)

+0

你能在MATLAB 2016b中重現這些結果嗎? - - 我現在不能。 –

2

我知道這是不是代碼高爾夫球場和問題是有點老了,但我有一個辦法,就是相同的結果較少的行(發現它爲here),您可以在其中直接修改BoxFace屬性,而不必象在兩個當前接受的答案中一樣搜索屬性。

lgnd = legend(legendTextCells); 
set(lgnd.BoxFace, 'ColorType', 'truecoloralpha', 'ColorData', uint8([255;255;255;0.5*255])); 

其中legendTextCells是圖例文本的您的單元陣列,和α的值可以通過在0.5*255修改小數係數來設定。

+0

生活是代碼高爾夫。玩笑。生活不是代碼高爾夫,而是代碼旅行推銷員問題。 – hyprfrcb