Как увеличить размер маркера легенды на точечной диаграмме в MATLAB 2014b?

Я нашел размер маркера на точечной диаграмме, а легенда отличается в MATLAB 2014b. Я искал и нашел некоторые решения из более ранней версии MATLAB, которые не применимы в последней версии. В моей текущей версии размер маркера в легенде настолько мал, что его трудно различить. Любая помощь?

figure; 
hold on 
s1 = scatter(1, 1, 150, 'k', 'o') 
s2 = scatter(1, 2, 150, 'k', '+') 
s3 = scatter(2, 1, 150, 'k', 'x') 
h = legend('Circle', 'Plus', 'X', 'Location', 'NorthEast'); 
set(h, 'FontSize', 14) 
axis([0 3 0 3]) 

Размер маркера в скаттере и легенде разный. Как я могу увеличить размер маркера записей легенды и сделать его похожим на точечную диаграмму.


person user962808    schedule 18.09.2015    source источник
comment
Можете ли вы показать нам с изображениями/кодом, что вы имеете в виду?   -  person Ander Biguri    schedule 18.09.2015
comment
Что тебе в этом не нравится? Я вижу несколько БОЛЬШИХ маркеров в моей легенде.   -  person Ander Biguri    schedule 18.09.2015
comment
@AnderBiguri свойство FontSize легенды управляет только текстом. Размер маркера в легенде не меняется.   -  person excaza    schedule 18.09.2015
comment
Я хотел бы увеличить размер маркера так же, как на точечной диаграмме!   -  person user962808    schedule 18.09.2015
comment
В моем мозгу было воспоминание, и я помню, что у меня была та же проблема. Действительно, это раздражает. Я не решил это в то время.   -  person Ander Biguri    schedule 18.09.2015
comment
Я ошибался! В свое время я ее решал ;)   -  person Ander Biguri    schedule 18.09.2015
comment
@AnderBiguri Я бы не сказал, что это дубликат. Хотя использование icons — это тот же подход, изменение LineWidth не влияет на легенды с маркерами.   -  person excaza    schedule 18.09.2015
comment
Альтернативный и Второй вариант   -  person thewaywewalk    schedule 18.09.2015
comment
@thewaywewalk ваши ссылки такие же   -  person excaza    schedule 18.09.2015
comment
@excaza true -› Второй вариант   -  person thewaywewalk    schedule 18.09.2015


Ответы (1)


Если я правильно понимаю, вы хотите получить доступ к выходным данным icons вызова legend и изменить свойство MarkerSize объектов исправления, которые являются дочерними элементами этих значков.

Звонок legend:

[h,icons,plots,legend_text] = legend('Circle', 'Plus', 'X', 'Location', 'NorthEast'); 

icons — это графический массив 6x1, например:

icons = 

  6x1 graphics array:

  Text     (Circle)
  Text     (Plus)
  Text     (X)
  Group    (Circle)
  Group    (Plus)
  Group    (X)

Что вам нужно, так это элементы, связанные с Group.

Если посмотреть на их свойства (здесь icons(4)), то получится:

icons(4)

 Group (Circle) with properties:

    Children: [1x1 Patch]
     Visible: 'on'
     HitTest: 'off'

  Show all properties

Таким образом, есть объект patch, связанный с ним как с его дочерним элементом. Вы хотите изменить его, например,

icons(Some index).Children.MarkerSize

В вашем случае вам нужно изменить объекты с 4 по 6:

for k = 4:6
icons(k).Children.MarkerSize = 20;
end

который выводит:

введите описание изображения здесь

вы можете автоматизировать это, конечно. Я использовал R2015a, поэтому я ожидаю, что поведение будет таким же для R2014b.

Надеюсь, это то, что вы имели в виду!

person Benoit_11    schedule 18.09.2015
comment
Не работает в R2015a - person Veridian; 06.03.2017