多个图的一个组合图例条目

时间:2015-03-02 20:23:08

标签: matlab plot legend matlab-figure

出于某种原因,我想分别绘制相同数据的线和标记。

data1 = (1:1:10)';
data2 = (1:2:10);
figure(1);
plot(data1,data1,'or');
hold on;
plot(data2,data2,'-r');
legend('data');

但是它只显示第一个图的图例。 Matlab似乎没有选择操纵图例标记,颜色和线条样式。 enter image description here

我怎样才能制作这样的传奇?

enter image description here

谢谢!

1 个答案:

答案 0 :(得分:5)

您需要绘制一个不可见第三个图(几乎没有数据可以保持快速)来定义您的图例:

data1 = (1:1:10)';
data2 = (1:2:10);
figure(1);
plot(data1,data1,'or'); hold on
plot(data2,data2,'-r'); hold on

%// legend plot
lp = plot(0,0,'-r','Marker','o','visible','off')
legend(lp,'data');

enter image description here

您需要将该隐形图的句柄传递给legend命令,或者您甚至可以将隐形图放入图例中:

legend(plot(0,0,'-r','Marker','o','visible','off'),'data');

如果你需要更频繁,你可以写一个小帮手函数

style = @(LineStyle, MarkerStyle) plot(0,0,LineStyle,'Marker',MarkerStyle,'visible','off')
legend(style('-r','o'),'data');

...您可以使用'color''LineWidth'或任何您想要的内容进行自定义。

它使您能够独立于实际数据创建具有多个条目的完全自定义图例:

legend([style('-r','o'),style('-b','x'),style('-g','v')],{'1','2','3'});

enter image description here