2010-02-03 305 views
9

我正嘗試在圖例中對代碼文本進行顏色編碼。 (因爲我試圖將幾個圖分成不同的類別,所以我不能只依賴圖例中的線條顏色。)我設法設置了整個圖例的文字顏色,但我無法設法逐行分配。這可能嗎?MATLAB:爲圖例中的文本分配多種顏色

到目前爲止的代碼:

list={'Label 1','Label 2','Label 3'}; 
leg=legend(list); 
set(leg,'Textcolor',[1 0 0]) 

爲整個傳奇爲紅色文本顏色。我想能夠使一些紅色,一些黑色。我嘗試將顏色數組分配爲n×3矩陣,但MATLAB並不那麼喜歡。我還使用get(leg)探索了傳說中的物業,但我找不到任何似乎有用的東西。有什麼建議麼?

回答

9

下面是代碼:

legtxt=findobj(leg,'type','text'); 
set(legtxt(1),'color','k') 

只要找出傳說對應於指數。

8

要單獨更改圖例文字顏色,您必須首先獲取圖例對象的子對象的文本對象的句柄。然後,您可以分別更改文字顏色。這裏是你如何能做到這一個例子:

plot(1:10, rand(1, 10), 'r');  % Plot a random line in red 
hold on; 
plot(1:10, rand(1, 10), 'b');  % Plot a random line in blue 
hLegend = legend('a', 'b');   % Create the legend 
hKids = get(hLegend, 'Children'); % Get the legend children 
hText = hKids(strcmp(get(hKids, 'Type'), 'text')); % Select the legend children 
                % of type 'text' 
set(hText, {'Color'}, {'b'; 'r'}); % Set the colors 

注意,在最後一行的顏色順序是藍色然後紅色,在標籤被傳遞到legend功能的方式相反的順序。上述會給你下面的情節:

enter image description here

12

雖然由議員和gnovice的答案是正確的,我想指出一個鮮爲人知的,但完全證明事實傳說函數返回對應於傳說組件附加手柄。從圖例函數的文檔:

[legend_h,object_h,plot_h,text_strings] =圖例(...)返回

  • legend_h - 圖例的手柄軸
  • object_h - 圖例中使用的線條,修補程序和文本圖形對象的句柄
  • plot_h - 繪圖中使用的線和其他對象的句柄
  • text_strings - 圖例中使用的文本字符串的單元格陣列

這些句柄使您能夠修改各個對象的屬性。

+0

謝謝指出!我想我應該在下次更仔細閱讀文檔文件。 – Doresoom 2010-02-03 22:54:18

+1

好,Yair。這將教會我*完全*讀取當前文檔,而不是從內存中回答。 ;) – gnovice 2010-02-04 04:51:47