如何制作自定义图例

我有以下图片:

在这里输入图像描述

我想为它制作一个传奇。 基本上,我想为每种类型的矩形制作一个图例。 在图例框中,我想根据它标记的正文的类型标记每个颜色行:

  • 绿线:头
  • 黄线:躯干
  • 紫线:右臂
  • 青线:左臂
  • 红线:左腿
  • 蓝线:右腿
  • 这基本上是自定义的,因为我有更多的每种类型的矩形。 我如何做一个自定义的传说,并将其附加到绘制此图片的图上?


    我能想到的最简单的方法是首先绘制每种类型的一个矩形,并为唯一的矩形构造一个图例。 像这样:

    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

    上一篇: how to make a custom legend

    下一篇: quiver not drawing arrows just lots of blue, matlab