多个地块的一个组合图例条目
One combined legend entry for multiple plots
由于某些原因,我想分别绘制相同数据的线和标记。
data1 = (1:1:10)';
data2 = (1:2:10);
figure(1);
plot(data1,data1,'or');
hold on;
plot(data2,data2,'-r');
legend('data');
但是它只会显示第一个图的图例。而且 Matlab 似乎没有选择来操纵图例标记、颜色和线型。
如何制作这样的图例?
谢谢!
您将需要绘制一个不可见的 第三个图(几乎没有数据来保持快速)来定义您的图例:
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');
您需要将不可见图的句柄传递给 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'});
由于某些原因,我想分别绘制相同数据的线和标记。
data1 = (1:1:10)';
data2 = (1:2:10);
figure(1);
plot(data1,data1,'or');
hold on;
plot(data2,data2,'-r');
legend('data');
但是它只会显示第一个图的图例。而且 Matlab 似乎没有选择来操纵图例标记、颜色和线型。
如何制作这样的图例?
谢谢!
您将需要绘制一个不可见的 第三个图(几乎没有数据来保持快速)来定义您的图例:
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');
您需要将不可见图的句柄传递给 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'});