Keeping previous legend in multiple plots done by a function

8 views (last 30 days)
Hello everybody,
I have a function, say my_plot_function , which plots simultion results. If I run my_plot_function more times, I can plot the different data on the same figure, however the legend is not kept and only the legend for the last my_plot_function run is displayed.
I want to hold not only the previous plots, but also the previous legend, and the plots are done by launching my_plot_function .
How can I keep also the previous legends, in addition to the plot?
Thanks
Patrizio

Answers (1)

Monisha Nalluru
Monisha Nalluru on 8 Mar 2021
Edited: Monisha Nalluru on 8 Mar 2021
You can use hold method to retain the current plot while adding new plot. Legend method to add legends to axes
Here is an example of retaining legend on the axes while calling function to plot new data
function my_plot(x,y,legendName)
plot(x,y,'DisplayName',legendName);
legend
end
x=linspace(1,10);
y=x*2;
y1=x*3;
y2=x*4;
my_plot(x,y,'x*2');
hold on
my_plot(x,y1,'x*3');
my_plot(x,y2,'x*4');
hold off
Hope this helps!
  2 Comments
PatrizioGraziosi
PatrizioGraziosi on 1 Jun 2021
Unortunately this does not work in a GUI app.
I circumvented the issue by doing as follows. This way, I re-load and re-apply the legend
leg_all = findobj(gcf, 'Type', 'Legend');
leg = leg_all.String';
labels = cellstr(labels);
leg_lab = [leg ; labels] ;
A = 'data' ;
N = ~cellfun('isempty',strfind(leg_lab,A) ) ;
leg_lab(N)=[];
legend(leg_lab);
PatrizioGraziosi
PatrizioGraziosi on 1 Jun 2021
Howvwer, this works only when I use theGUI to plot in an external figure. If I want to plot in a graph inside the GUI app, after two or three plots it automatically reset the lines...

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!