Use Legend to show array and matrix

I have one array and one matrix like A={'x' 'y' 'z'}; B=[1 2 3]. I want to make a legend as: x=1 y=2 z=3
in my plot, could anyone help me with this issue.
Thanks

 Accepted Answer

legend( arrayfun(@(K) sprintf('%s=%d',A{K}, B(K)), 1:length(A), 'UniformOutput', false) )

4 Comments

Alternately,
legend( strcat(A, '=', num2str(B(:)) ) )
Thanks guys! I can have one legend now... But actually I just have x=1 without other two legends. Do you know how to modify?
Thanks
It said: Warning: Ignoring extra legend entries.
You can only have one legend entry per plotted item (e.g., one per line).
How are you doing your plotting, and what are the size() of the matrices you are plotting ?

Sign in to comment.

More Answers (1)

You can do this:
plot(rand(10,3))
legend(cellfun(@(x,y)sprintf('%s=%s',x,y),A,B,'UniformOutput',false))

8 Comments

Thanks for your reply. I am sorry I just modified my question and could you please take look at it again?
Thanks
Why have you changed your question?
I made some change of my code...
Your B now contains numbers, replace the second %s in my code to %d if they are integers
It always give me this: Error using cellfun Input #2 expected to be a cell array, was double instead.
You change the second one to a regular array, you can use Walter's code below
Thanks a lot! I got the legend but there is only x=1 without other two.
It said: Warning: Ignoring extra legend entries.

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!