2013-02-13 134 views
0

我需要你們的傢伙幫助解決我面臨的一個小問題。當我想使用bar函數描述f1和f2時,我需要在圖的圖例標籤中排除f2註釋對象,但是下面所寫的集合語法似乎給出了所提及的錯誤。刪除圖例中的特定對象

的代碼如下:

f1= bar([SN, SN, SN], [Class_Work, Final_Exam, Shift_Grade'-Grade], K, 'stacked'); 

f2= bar([SN(idx), SN(idx), SN(idx)], [Class_Work(idx), Final_Exam(idx), SG(idx)-Grade(idx)], K*dy/dx, 'stacked', 'LineWidth', 2.5); 

set(f1,{'DisplayName'},{'Mid-Term','Final-Exam','Shift'}') 
legend('location','NorthEast','Orientation','horizontal'); 

% in order to Exclude f2 indices from legend: (BUT SEEMS NOT WORKING based on error!) 
set(get(get(f2,'Annotation'),'LegendInformation'),... 
    'IconDisplayStyle','off'); 

運行它給出了在命令窗口包括正確的數字此錯誤後,但與所有註釋對象:

???錯誤使用==>得到

從單元轉換爲雙重是不可能的。在==

錯誤>設置(獲得(得到(F2, '註釋'), 'LegendInformation'),...

的圖,這是我需要的是:數據4,數據5,和DATA6圖形對象在圖例選項卡(與F2)不出現,繪圖F2時。

我很欣賞你的幫助提前。

回答

0

有一個特殊的語法來調用傳說這應有助於在你的情況。從Matlab文檔:

legend(h, 'string1', 'string2', ...); 

顯示器上含有由矢量h的手柄來識別對象的情節的圖例,並使用指定的字符串來標記對應的圖形對象(線,檢測BarSeries等)。

所以,你的情況,你只應該做的:

legend(f1, 'Mid-Term', 'Final-Exam', 'Shift'); 

,然後修改圖例(位置,方向等)相應的其他屬性。

UPDATE:

或者,讓你的初始代碼的工作,你應該做的:

annots = get(h,'Annotation'); 
for i=1:length(annots) 
    set(get(annots{i},'LegendInformation'),'IconDisplayStyle','off'); 
end 

annots = get(h,'Annotation')回報單元陣列,然後你只需在每個單元的這種操作(即annots{i})陣列。

+0

我意識到圖例語法。我遇到的問題是,我有2套酒吧(f1和f2),因此有兩個傳說。因此,我需要使用下面的代碼來強制f2圖例的對象(例如,'data4','data5'和'data6')未被顯示在圖例欄中 – Hans 2013-02-14 10:08:10

+0

問題出在:set(get (f2,'Annotation'),'LegendInformation'),... ??使用==>錯誤得到 從單元格轉換爲double是不可能的我怎樣才能解決此行的語法問題?PLS幫助:( – Hans 2013-02-14 10:13:54

+0

那麼'get(h,'Annotation')'返回單元數組,所以你可以這樣做:'annots = get(h,'Annotation');對於i = 1:length(annots); set(get(annots {i} ,'LegendInformation'),'IconDisplayStyle','off'); end;' – miy 2013-02-14 10:44:34

相關問題