Displaying legend for multiple plots

6 ビュー (過去 30 日間)
Marin
Marin 2012 年 4 月 17 日
コメント済み: mimi sam 2017 年 5 月 22 日
I haven't seen this question asked yet, so I guess the solution is quite simple, but I haven't been able to find it.
I need to plot several groups of lines (each of about 10-15 lines) and display legend, but not for each of the lines seperately but only for each group.
Specificaly, I have groups of impact craters arranged by the age of the surface they are on. Each group has around20-30 craters and there are 4 groups, so I want the legend of the graph to have 4 entries, one for each group.
Can someone help me with this? Thank you in advance.

採用された回答

Luffy
Luffy 2012 年 7 月 7 日
編集済み: Luffy 2012 年 7 月 7 日
h = get(gca,'Children');
Then select handles of lines you want to add to legend.
Say h(1) is handle of a line in 1st group,
h(10) 2nd group,
h(15) 3rd
h(30) 4th
v = [h(1) h(10) h(15) h(30)]';
legend(v);
  3 件のコメント
Marin
Marin 2012 年 7 月 7 日
Excellent, thank you very much!
Luffy
Luffy 2012 年 7 月 7 日
You need not use hold on command that many times,just write it before for loop,after figure command

サインインしてコメントする。

その他の回答 (1 件)

Luffy
Luffy 2012 年 7 月 7 日
編集済み: Luffy 2012 年 7 月 7 日
a=randn(5,50);
b=randn(5,50);
c=randn(5,50);
figure;
hold on;
for i=1:5
plot(a(i,:),'.-b');
plot(b(i,:),'.-r');
plot(c(i,:),'.-g');
end
h = findobj('Color','r');
g = findobj('Color','b');
i = findobj('Color','g');
v = [h(1) g(1) i(1)];
legend(v);
% For location where your legend should appear see
doc legend
  2 件のコメント
Marin
Marin 2012 年 7 月 7 日
I see. I tought that hold on should go after every plot we wish to add. Thank you once again :)
mimi sam
mimi sam 2017 年 5 月 22 日
Or you can proceed as in this example (of matlab)
Plot three lines and return the chart line objects created. Then, create a legend that includes only two of the lines by specifying the first input argument as a vector of the chart line objects to include.
x = linspace(0,3*pi); y1 = sin(x); p1 = plot(x,y1);
hold on y2 = sin(x - pi/4); p2 = plot(x,y2);
y3 = sin(x - pi/2); p3 = plot(x,y3); hold off
legend([p1 p3],'First','Third')

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLegend についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by