Cell array for legend in a plot loop
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Romain Liechti
am 7 Jun. 2019
Kommentiert: Romain Liechti
am 7 Jun. 2019
I've built a function to plot a structure of idfrd, that use the fieldnames of the structure as legend for the curves. Everything works fine so far but I got a warning when I'm using the cell array for legend in the loop. 'Warning: Ignoring extra legend entries.' How can I get rid of this?
% Get field names as a cell array
names = fieldnames(Struct);
% Declare the cell array for legend
LegendCell = cell(length(names),1);
% Create the cell array containing the name of the fields for the legend
for jj = 1:length(names)
LegendCell{jj} = names{jj};
LegendCell{jj} = strrep(LegendCell{jj},'_',' '); % replace underscore by space
end
for ii = 1:length(fieldnames(Struct))
[mag,pha,~] = bode(Struct.(names{ii}),f_ax*2*pi);
figure(1)
subplot(211)
semilogx(f_ax,20*log10(squeeze(mag)),'linewidth',2)
hold on
l = legend(LegendCell{ii},'Location','southwest');
set(l,'FontSize',12,'FontName','Helvetica');
end
0 Kommentare
Akzeptierte Antwort
Alex Mcaulley
am 7 Jun. 2019
Putting the legend call out of the loop:
% Get field names as a cell array
names = fieldnames(Struct);
% Declare the cell array for legend
LegendCell = cell(length(names),1);
% Create the cell array containing the name of the fields for the legend
for jj = 1:length(names)
LegendCell{jj} = names{jj};
LegendCell{jj} = strrep(LegendCell{jj},'_',' '); % replace underscore by space
end
for ii = 1:length(fieldnames(Struct))
[mag,pha,~] = bode(Struct.(names{ii}),f_ax*2*pi);
figure(1)
subplot(211)
semilogx(f_ax,20*log10(squeeze(mag)),'linewidth',2)
hold on
end
l = legend(LegendCell,'Location','southwest');
set(l,'FontSize',12,'FontName','Helvetica');
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Legend finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!