绘制多个轴但只有一个图例

时间:2015-10-03 15:16:15

标签: matlab plot legend-properties

以下代码生成一个图,其中两条线为左侧y轴,另一条线为右侧y轴。这两个图都有自己的图例,但我只想要一个列出所有3行的图例。我试图将'y1''y2'字符串放入第二个legend - 命令,但这没有用。

line(x,y1,'b','LineWidth',2)

line(x,y2,'Color',[0,0.6,0.5],'LineWidth',2)

legend('y1','y2');

ax1 = gca;
ax2 = axes('Position',ax1.Position,'YAxisLocation','right', 'Color','none','YColor',[255,127,80]/256);
linkaxes([ax1,ax2],'x');

line(x,y3,'Parent',ax2,'LineWidth',2,'Color',[255,127,80]/256)

legend('y3')

1 个答案:

答案 0 :(得分:1)

这是一个棘手的问题,因为图例以某种方式连接到轴。由于您将创建2个轴,因此将有2个图例。然而,有一个技巧来实现你想要的。首先,在同一轴上绘制所有线,然后运行legend。然后创建第2轴,然后将第3行移动到第2轴。所以你的代码应该是这样的:

% line
line(x,y1,'b','LineWidth',2)
line(x,y2,'Color',[0,0.6,0.5],'LineWidth',2)
l3=line(x,y3,'LineWidth',2,'Color',[255,127,80]/256)

% legend
legend('y1','y2','y3');

% 2nd axes
ax1 = gca;
ax2 = axes('Position',ax1.Position,'YAxisLocation','right', 'Color','none','YColor',[255,127,80]/256);
linkaxes([ax1,ax2],'x');

% move l3 to 2nd axes
set(l3,'Parent',ax2);

如果您想使用'DisplayName',则意味着与line

一起使用
line(x,y1,'Color','b','LineWidth',2,'DisplayName','y1');
line(x,y2,'Color',[0,0.6,0.5],'LineWidth',2,'DisplayName','y2');

legend('show');