How to setup legend for a figure with two axes (left and right)?
36 ビュー (過去 30 日間)
古いコメントを表示
I have a figure with two axes (left and right). 2 lines on left axis and one line on right axis. I can not get all legends in one box using following code.
PS. I have read previous discussions (links below) on this topic but does not seem to work for me!
x = 0:0.01:10;
y11 = sin(x);
y12 = cos(x);
y2 = ones(1001,1);
figure;
ax(1) = axes('position',[0.1 0.1 0.8 0.8]);
ax(2) = axes('position',[0.1 0.1 0.8 0.8], 'yaxislocation','right','color','none');
line('parent',ax(1),'xdata',x,'ydata',y11,'color','b');
line('parent',ax(1),'xdata',x,'ydata',y12,'color','g');
line('parent',ax(2),'xdata',x,'ydata',y2,'color','r');
legend( [ax(1) ; ax(2)] , {'sin','cos','one'} )
0 件のコメント
採用された回答
Jakub Rysanek
2016 年 10 月 4 日
You can create the legend using the handles of your line objects:
l1=line('parent',ax(1),'xdata',x,'ydata',y11,'color','b');
l2=line('parent',ax(1),'xdata',x,'ydata',y12,'color','g');
l3=line('parent',ax(2),'xdata',x,'ydata',y2,'color','r');
legend( [l1;l2;l3] , {'sin','cos','one'} );
3 件のコメント
その他の回答 (1 件)
KSSV
2016 年 10 月 4 日
編集済み: KSSV
2016 年 10 月 4 日
Try the legend separately:
legend(ax(1) , {'sin','cos'} ) ;
legend(ax(2) , {'one'} ) ;
2 件のコメント
Subhamoy Saha
2018 年 12 月 25 日
編集済み: Subhamoy Saha
2018 年 12 月 25 日
For R2014b that works fine but for R2017a only last legend is showing (i.e., ax(2) legend) ignoring the first one (, i.e. ax(1)). This is really important as I want to set location for these two legend at two different location and so cannot use a single legend command. Please help how to proceed.
参考
カテゴリ
Help Center および File Exchange で Legend についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!