Cell array for legend in a plot loop
14 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Alex Mcaulley
2019-6-7
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');
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Legend 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!