cga*_*gao 1 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');
Run Code Online (Sandbox Code Playgroud)
但是它只会显示第一个图的图例.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');
Run Code Online (Sandbox Code Playgroud)

您需要将该隐形图的句柄传递给legend命令,或者您甚至可以将隐形图放入图例中:
legend(plot(0,0,'-r','Marker','o','visible','off'),'data');
Run Code Online (Sandbox Code Playgroud)
如果你需要更频繁,你可以编写一个小帮助函数
style = @(LineStyle, MarkerStyle) plot(0,0,LineStyle,'Marker',MarkerStyle,'visible','off')
legend(style('-r','o'),'data');
Run Code Online (Sandbox Code Playgroud)
...你可以自定义'color','LineWidth'或任何你想要的.
它使您能够独立于实际数据创建具有多个条目的完全自定义图例:
legend([style('-r','o'),style('-b','x'),style('-g','v')],{'1','2','3'});
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
2577 次 |
| 最近记录: |