以下代码生成一个图,其中两条线为左侧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')
答案 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');