首页 > 解决方案 > 使用matlab绘图时如何使图例中的标记变小

问题描述

在这个图中,图例中的标记这么大,我怎样才能让它变短。

我花了很多时间在网上寻找解决方案。但是我没有找到任何可以解决这个问题的解决方案。

谢谢。

在此处输入图像描述

这是代码,

latency = [1 1.3 0.5;...
           0.8 1.2 0.4;...
           0.7 1.1 0.35;...
           0.9 1.0 0.3;...
           0.8 1.2 0.4;...
           0.7 1.1 0.3];
h = bar(latency);
set(h(1), 'FaceColor',[33 36 61]./255)
set(h(2), 'FaceColor',[240 240 240]./255)
set(h(3), 'FaceColor',[250 128 114]./255)
set(h, 'LineWidth', 1);
set(gca,'Linewidth',1,'Fontname', 'arial');
set(gca, 'XLim', [0, size(latency,1)+1])
set(gca, 'YLim', [0 max(max(latency))*1.1]);
xlabel('(a) Latency','FontSize',14)
ylabel('Latency (us)','FontSize',14)
legend({'AAAAAAAA', 'BBBBBBBB', 'CCCCCCCC'}, 'Orientation', 'horizontal','FontSize',11)
box on;

更新:

根据答案,我添加了两行代码:

[lgd,icons,plots,txt] = legend({'AAAAAAAA', 'BBBBBBBB', 'CCCCCCCC'});
icons(4).Children.XData = icons(4).Children.XData/2;

现在我得到了这个传说。

但是文本前有一个空格。

在此处输入图像描述

标签: matlabmatlab-figurefigure

解决方案


有一个未记录的属性ItemTokenSize可以做到这一点:

% Fixe the new size of each box:
box_size = [10 10 10]

% Get the handle
hdl = legend({'AAA', 'BBB', 'CCC'})

% Set the new size
hdl.ItemTokenSize = box_size;

% Then recenter the legend
% ...

在此处输入图像描述

未记录意味着可以在未来的版本中删除此选项,恕不另行通知。


推荐阅读