# Help With Plot Legend

3 views (last 30 days)
Edward on 11 May 2012
hello,
if i have a cell array of strings for example:
cell{1}='st1';
cell{2}='st2';
cell{3}='st3';
and make a plot with 3 lines each with variable name cell{n}.
Why is it that writing:
legend(cell{1}, cell{2}, cell{3})
only returns a legend with the one variable name cell{3} in it?
Is there a way of doing this for more than 3 variables using a loop?
Walter Roberson on 11 May 2012
Dr. Seis on 12 May 2012
I guess the question is... how is your plots set up? Can you copy/paste that part of your code?

Dr. Seis on 11 May 2012
If you are just trying to apply the 3 legend strings to 3 lines on a plot, then all you need to do is:
legend(cell)
Take a look at these other posts related to legend entries for more help:
and

Image Analyst on 11 May 2012
It doesn't. Here, try this:
cellArray{1}='st1';
cellArray{2}='st2';
cellArray{3}='st3';
colorMap = lines(8)
for k = 1:3
y = rand(1,10);
plot(y, 'Color', colorMap(k,:));
hold on;
end
legend(cellArray{1}, cellArray{2}, cellArray{3});
But I did notice something very bad in your code. You overwrote the built-in MATLAB function called "cell" with your variable named "cell." Don't do that. Other common functions/entities people destroy are "i", "j", and "image".
Image Analyst on 12 May 2012
I guess I don't get it. You could call plot() 3 times with different variables and call legend and have all variable names show up in the legend. You could make 3 arrays, st1, st2, and st3, and call plot(st1), plot(st2), and plot(st3) and then call legend and have 3 lines with each name beside a line in the legend.
Walter Roberson on 12 May 2012
IA, my comment was in response to a comment from someone else that has since been deleted.