2016-08-11 8 views
1

1つのプロットで複数の凡例を作成したい。このソリューションは、2014bバージョンよりも前に完全に機能します。私はハンドルを使ってこれをエレガントにする方法を見つけ出そうとしていますが、これまでの成功はありません。どんなアイディアも大歓迎です。Matlab複数の凡例を1つのプロットで作成する2014b

2013bでの例:

x = 1:50; 
y1 = sin(x/2); 
y2 = cos(x/2); 

f = figure(1); 
pl(1) = plot(x,y1,'g');hold on; 
pl(2) = plot(x,y2,'r'); 

h1 = legend('eg1','eg2');  
set(h1,'Location','NorthEast') 

tmp = copyobj(h1,f); 

h2 = legend(pl,'sin','line');  
set(h2,'Location','SouthWest') 

私は

ax = gca; 
tmp = copyobj([h1,ax],f); 

を使って何かを得るかが、私は再び伝説を設定すると、以前の伝説がプロットの下に行きます。

ありがとうございます!

+0

TMP =関数copyobj実行する際に、私は、次のエラーを見ているで以下のチャートを生成するために、この

コードの好例を有する(H1を、F)。 matlab.graphics.illustration.Legend/connectCopyToTree(行5)を使用しているエラー 凡例は、関連する軸と共にコピーする必要があります。凡例と軸を一緒にコピーするには、COPYOBJでのベクトル入力を使用します。 –

答えて

4

Matlabでは、デフォルトで軸ごとに1つの凡例しか使用できないため、凡例を取得するために偽/空のセカンダリ軸を作成する必要があります。 Mathworks helpここで

x= 0:0.01:2*pi; 
y = sin(x); 
hl1 = line(x, y,'Color','k','LineStyle','--'); 
ax1 = gca; 
set(ax1,'xlim',[0, 7],'ylim',[-1, 
1],'XColor','k','YColor','k'); 
legend_handle1 = legend(' sin'); 
ax2 = axes('Position',get(ax1,'Position'),... 
      'xlim',[0, 7],'ylim',[-1,1],... 
      'Visible','off','Color','none'); 
hl2 = line(pi/2, 1,'Color','r','Marker', 'o','Parent',ax2); 
hl3 = line(pi, 0,'Color','g','Marker', 'x','Parent',ax2); 
legend_handle2 = legend('peak', 'zero'); 
set(legend_handle2, 'Color', 'none'); 

enter image description here

関連する問題