Cell array for legend in a plot loop
16 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Romain Liechti
le 7 Juin 2019
Commenté : Romain Liechti
le 7 Juin 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 commentaires
Réponse acceptée
Alex Mcaulley
le 7 Juin 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');
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Legend dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!