legend in 2d line plot

3 views (last 30 days)
Richard
Richard on 8 Mar 2012
I'm plotting data in a for loop where I'm looping through two datasets so using plot...; hold on;plot...
I only want the legend for the first plot, but there doesn't seem to be a way of doing this. Any advice?
Failing this, is there a way of adding a graph onto a currently existing graph. So, that I could just plot the first with a legend and then plot the second on top of this without a legend?
The code I've written is shown below:
for i = 1:length(LakeName);
for ii = 1:length(CorrVariables)
fh{ii} = figure(ii);
plot(HiResDay,HiRes.(LakeName{i}).(CorrVariables{ii}),'linewidth',2,'color',cmap(i,:));hold on;
plot(LowResDay,LowRes.(LakeName{i}).(CorrVariables{ii}),'--k','linewidth',3);
hTitle = title ([CorrVariables{ii} ' 2011']);
hXLabel = xlabel('Time (Day of year)' );
hLegend = legend(LakeName{:});
end
end
This doesn't work as I expected; the legend shows the line for the first plot and then the second, then back to the first, so in the end I have the first legend entry in the designated color, then the second legend entry shown according to '--k'.

Accepted Answer

the cyclist
the cyclist on 8 Mar 2012
Here is a simple example of using the handles of only the first plots when making the legend.
h1 = zeros(5,1);
h2 = zeros(5,1);
lineColor = rand(10,3);
figure
hold on
for i =1:5;
h1(i) = plot(rand(4,1),rand(4,1),'Color',lineColor(i,:)); % Plot some random data in a random color
h2(i) = plot(rand(4,1),2+rand(4,1),'Color',lineColor(5+i,:));
end
legendText = {'1','2','3','4','5'};
legend(h1,legendText); % Make legend using handles to only first plots
  3 Comments
the cyclist
the cyclist on 8 Mar 2012
I was hoping you would see how this would generalize. The essence is that you need to create a vector of the handles to the ONLY the elements you want in the legend. Then use that vector of handles when you call the legend command.
That is what I did in my example. I built my vector of handles from only the first plot, and used that vector in the legend command.
Richard
Richard on 9 Mar 2012
finally got it, I needed to create a cell array for the handles of each figure. cheers.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!