For some reason, I would like to plot the line and marker of the same data separately.
data1 = (1:1:10)';
data2 = (1:2:10);
figure(1);
plot(data1,data1,'or');
hold on;
plot(data2,data2,'-r');
legend('data');
However it will only display the legend for the first plot. And Matlab seems not to have option to manipulate the legend marker, color and linestyle.
How can I make legend like this?
Thanks!
You will need to plot an invisible third plot (with almost no data to keep it fast) to define your legend:
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');
You need to pass the handle of that invisible plot to the legend
command or you could even put the invisible plot into the legend:
legend(plot(0,0,'-r','Marker','o','visible','off'),'data');
If you need that more often, you can write a little helper function
style = @(LineStyle, MarkerStyle) plot(0,0,LineStyle,'Marker',MarkerStyle,'visible','off')
legend(style('-r','o'),'data');
... which you can customize with 'color'
, 'LineWidth'
or whatever you want.
It enables you to create fully customized legends with multiple entries independently from your actually data:
legend([style('-r','o'),style('-b','x'),style('-g','v')],{'1','2','3'});