我有以下图片:

我想为它创造一个传奇。基本上,我想为每种类型的矩形制作一个图例。在“图例”框中,我要根据其标记的主体类型标记每条颜色线:
这基本上是自定义的,因为我每种类型都有更多的矩形。我怎样才能做一个自定义的图例,并将其附加到绘制这幅图片的图形上?
发布于 2012-10-15 11:32:21
我能想到的最简单的方法是先绘制每种类型的一个矩形,然后只为唯一的矩形构造一个图例。就像这样:
figure;
hold on;
% unique rectangles
plot(rand(1, 10), 'b');
plot(rand(1, 10), 'g');
% the rest
plot(rand(1, 10), 'b');
plot(rand(1, 10), 'g');
% use normal legend with only as many entries as there are unique rectangles
legend('Blue', 'Green');你会有许多相同颜色的线条,但传说中只有独特的颜色。
发布于 2012-10-15 12:03:04
有两种方法你可以这样做。您可以创建您的方块,然后将它们分配给一个hggroup。这样,您就不会有多个项目为每种颜色。就像这样:
hold on
for ii = 1:4
hb(ii) = plot(rand(1,2), rand(1,2),'color','r');
end
hg = hggroup;
set(hb,'Parent',hg)
set(hg,'Displayname','Legs')
legend(hg)或者您可以创建虚拟对象,如下所示:
hold on
for ii = 1:4
hb(ii) = plot(rand(1,2), rand(1,2),'color','r');
end
p = plot([],[],'r');
legend(p,'Legs')前者更优雅一些。
发布于 2015-01-02 11:22:51
我想补充一下such 77关于使用hggroup的答案,为了使用干净的传说,我还需要设置'IconDisplayStyle‘(Matlab R2014a),这样:
%4 kinds of lines:
n_areas = 4;
n_lines = 10;
%use built-in color map
cmap = hsv(n_areas);
%plot lines and generate handle vectors
h_fig = figure;
hold on
h_lines = zeros(1,n_lines);
for l = 1:n_areas
for k = 1:n_lines
h_lines(k) = plot(rand(1,2), rand(1,2),'Color',cmap(l,:));
end
%Create hggroup and set 'icondistplaystyle' to on for legend
curPlotSet = hggroup;
set(h_lines,'Parent',curPlotSet);
set(get(get(curPlotSet,'Annotation'),'LegendInformation'),...
'IconDisplayStyle','on');
end
%Now manually define legend label
legend('heads','legs','hands','feet')https://stackoverflow.com/questions/12894652
复制相似问题