如何制作自定义图例
我有以下图片:
我想为它制作一个传奇。 基本上,我想为每种类型的矩形制作一个图例。 在图例框中,我想根据它标记的正文的类型标记每个颜色行:
这基本上是自定义的,因为我有更多的每种类型的矩形。 我如何做一个自定义的传说,并将其附加到绘制此图片的图上?
我能想到的最简单的方法是首先绘制每种类型的一个矩形,并为唯一的矩形构造一个图例。 像这样:
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');
您将有许多相同颜色的线条,但只有独特颜色的图例。
有两种方法可以解决这个问题。 你可以创建你的方块,然后将它们分配给一个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')
前者更优雅一点。
我想添加到dvreed77的使用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')
链接地址: http://www.djcxy.com/p/67289.html