Как сделать маркер меньшим в легенде, когда сюжет с Matlab - PullRequest
0 голосов
/ 02 марта 2020

На этом рисунке маркер в легенде настолько большой, как я могу сделать его короче.

Я трачу много времени на поиск решения в Интернете. Но я не нашел никакого решения, которое могло бы решить эту проблему.

Спасибо.

enter image description here

Это код,

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;

Теперь я получаю эту легенду.

Но перед текстом есть пробел.

enter image description here

1 Ответ

1 голос
/ 02 марта 2020

Для этого существует недокументированное свойство ie 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
% ...

enter image description here

Недокументированные средства что эта опция может быть удалена без уведомления в будущем выпуске.

...