How can I automatically fill in the legend?
16 次查看(过去 30 天)
显示 更早的评论
Hi all,
I was wondering how I can automatically fill in my legend of a plot with the names of the files I load regarding excel-files (those contain numerical matrices). The code I'm using is:
material = {xlsread('dp600_2_layers_L50.xlsx',4),xlsread('dp600_3_layers_L50.xlsx',4),xlsread('dp800_3_layers_L50.xlsx',4)};
legend(material);
Clearly, I want to name the first line "dp600_2_layers_L50", the second line "dp600_3_layers_L50", etc. The error which Matlab returns is "Cell array argument must be a cell array of strings.", which seems logical. Is there any way to work around this, or do I have to fill in the legend manually each time I change the input files?
Thank you all in advance!
Thomas
0 个评论
采纳的回答
CS Researcher
2016-5-4
Let us assume there are N files. You can do this:
legendTitle = cell(1,N);
for i = 1:N
%Your other operations
[~,fileName,~] = fileparts(file) % e.g., file is 'dp600_2_layers_L50.xlsx'
legendTitle{1,i} = fileName;
end
plot() % Plot whatever you need to
legend(legendTitle);
Hope this helps!
2 个评论
Sarlota Duskova
2020-4-14
Hello, Can I ask, I have similar problem. My code is look like this:
legendTitle = getappdata(0, 'Text')
for j = 1:nFiles
filename = cell2mat(legendTitle(j))
[~,fileName,~] = fileparts(filename);
legendTitle{1,j} = fileName
end
legend(app.axes1,{legendTitle,'Temperature'},
but it doesnot work because legendTitle is in cell array. It is work when I do this:
legend(app.axes1,legendTitle)
but I am reading multiple csv file and I want to have legends names then which is contain in legendTitle but then I have second curv which is everytime Temperature. And I need show the same count in legend as is choosen files. So how can I put name Temperature into legend which already contains legendTitle which is in cell array? Thank you for your reply.
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Legend 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!