Displaying legend for multiple plots
1 回表示 (過去 30 日間)
古いコメントを表示
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.
0 件のコメント
採用された回答
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 件のコメント
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
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 件のコメント
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 Exchange で Legend についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!