如何在MATLAB中的单个图上添加两个图例?

matlab plot legend matlab-figure

39197 观看

5回复

2169 作者的声誉

我想在MATLAB中的绘图中添加两个图例。我怎样才能做到这一点?

作者: Will 的来源 发布者: 2012 年 6 月 28 日

回应 (5)


9

117092 作者的声誉

决定

您可以创建第二个叠加轴,并带有自己的图例(当然在其他位置)。


编辑:

这是一个简单的示例:

%# create some plot with a legend
hAx(1) = axes();
hLine(1) = plot(1:10, 'Parent',hAx(1));
set(hAx(1), 'Box','off')
legend(hLine(1), 'line')

%# copy the axis
hAx(2) = copyobj(hAx(1),gcf);
delete( get(hAx(2),'Children') )            %# delete its children
hLine(2) = plot(sin(1:10), 'Color','r', 'Parent',hAx(2));
set(hAx(2), 'Color','none', 'XTick',[], ...
    'YAxisLocation','right', 'Box','off')   %# make it transparent
legend(hLine(2), {'curve'}, 'Location','NorthWest', 'Color','w')

截图

作者: Amro 发布者: 29.06.2012 12:54

3

7241 作者的声誉

要创建粘性图例,您可以致电 copyobj

handle_legend = legend(handle_plot, 'string1');
copyobj(handle_legend, handle_figure);

copyobj函数只是将其关联的图例保留在图中。

这可以在单个轴内运行(无需创建第二个叠加轴),并且可以通过这种方式添加多个图例。

例:

%declare figure
hfigure = figure('Color', 'w');

%plot 2 lines (red and blue)
hplot1 = plot(1:10,'r-.x');
hold on;
hplot2 = plot(10:-1:1,'b--o');

%plot legends
hlegend1 = legend(hplot1, 'Data 1', 'Location','East'); %display legend 1
new_handle = copyobj(hlegend1,hfigure);                 %copy legend 1 --> retain
legend(hplot2, 'Data 2', 'Location','West');            %display legend 2

在此处输入图片说明

作者: marsei 发布者: 24.04.2014 12:17

0

620 作者的声誉

创建第一个图例后,创建一个新的不可见轴手柄:

ax=axes('Position',get(gca,'Position'),'Visible','Off');

现在在新轴上创建第二个图例:

legend(ax,...);

它的原理与@Amro的答案基本相同,但更简单,更短。

作者: tvo 发布者: 12.05.2016 09:18

1

11 作者的声誉

多个地块的示例:

hAx(1) = axes();
hold on
hLine(1) = plot(1:10, 'Parent',hAx(1),'color','b');
hLine(2) = plot(3:15, 'Parent',hAx(1),'color','b', 'linestyle','--');
set(hAx(1), 'Box','off')
legend([hLine(1), hLine(2)],{ 'line' 'line2'})

%# copy the axis
hAx(2) = copyobj(hAx(1),gcf);
delete( get(hAx(2),'Children') )            %# delete its children
hold on
hLine(3) = plot(sin(1:10), 'Color','r','Parent',hAx(2));
hLine(4) = plot(cos(1:10), 'Color','r','linestyle','--','Parent',hAx(2));
hold off
set(hAx(2), 'Color','none', 'XTick',[], ...
'YAxisLocation','right', 'Box','off')   %# make it transparent
legend([hLine(3),hLine(4)], {'sin' , 'cos'}, 'Location','NorthWest', 'Color','w')
%legend(hLine(3), {'sin'}, 'Location','NorthWest', 'Color','w')
作者: houcinus 发布者: 15.02.2017 08:55

0

1 作者的声誉

您是如何将图例放在图表下方的?请查看左侧的红线。谢谢和建议MH

作者: user3476823 发布者: 02.09.2019 08:36
32x32