1. 程式人生 > >一個figure存在多個legend:多行多列圖例

一個figure存在多個legend:多行多列圖例

問題:如何在Matlab中,將圖例繪製成多行多列的?

查詢資料過程中發現,

1)有的方法要求多個plot中橫座標具有相同的長度

2)高版本中,部分函式報錯(應該可以改正)

本文根據需要找到一個可靠的解決方法,現整理如下:

優點:每個plot互相獨立;程式碼量少,易於操作;

程式示例:第一行一個圖例,第二行兩個圖例且水平放置;

%%功能:繪製多個legend
figure;
x = 1:10;
p1 = plot(x,2.*x,'k-');  %真實RUL
hold on;
p2 = plot(x,4.*x,'b-');  %改進距離度量
p3 = plot(x,8.*x,'r-');  %餘弦相似度+距離

% ============= Legend 1 :
hg1 = legend('第一條');
set(hg1,'FontSize',12,'Location', 'SouthOutside','box','off');  
%注:將legend放在圖外面時,Legend 1不能通過滑鼠移動,只能通過程式碼調整位置 
% ============= Legend 2 :
ah2 = axes('position',get(gca,'position'),'visible','off');
hg2 = legend(ah2, [p2 p3], '第二條', '第三條');
set(hg2,'FontSize',12,'Location', 'SouthOutside',...
        'Orientation','horizontal','box','off');

說明:

1)第一個圖例只需獲取legend的控制代碼,然後對齊進行設定;

2)後面的圖例均需要三行即

ah2 = axes('position',get(gca,'position'),'visible','off');      %固定寫法,只需更改返回值。必須有!!!

hg2 = legend(ah2, [p2 p3], '第二條', '第三條');                 %繪製圖例,[p2 p3]表示繪製哪幾個曲線的圖例

set(hg2,...)                                                                       %設定各種引數

比如:再新增一個圖例

ah3 = axes('position',get(gca,'position'),'visible','off');
hg3 = legend(ah3, [p4 p5 p6], '第四條', '第五條','第六條');
set(hg3,'FontSize',12,'Location', 'SouthOutside',...
        'Orientation','horizontal','box','off');

通過繪製多個legend,達到m行n列的圖例效果;

進一步,在figure的“影象屬性”狀態下,可以進行更多的操作。