How to set legend marker size

205 visualizaciones (últimos 30 días)
RuiQi
RuiQi el 16 de Jul. de 2017
Editada: Monique el 24 de Jul. de 2024
How do I change the marker size on the legend ? I can change the font size but not marker.
l = legend('Orientation', 'Horizontal', 'RNN (Ours)', 'SLIC', 'SEEDS', 'LSC', 'ERS', 'FH');
l.FontSize = 20;
%l.MarkerSize = 20; does not work
%l.markersize = 20; does not work
set(l,'Position', [0.4 0 0.2 0.2], 'Units', 'normalized');
%set(l,'MarkerSize', 20); does not work

Respuestas (3)

Carl Witthoft
Carl Witthoft el 11 de Abr. de 2019
Best way: see Stackoverflow question 2871747
% thanks to , Luis Mendo and Lea
[~, objh] = legend({'one plot', 'another plot'}, 'location', 'NorthWest', 'Fontsize', 14);
%// set font size as desired
% note that even if you plot(x,y,'.') it's a "line" plot
objhl = findobj(objh, 'type', 'line'); %// objects of legend of type line
set(objhl, 'Markersize', 12); %// set marker size as desired
% or for Patch plots
objhl = findobj(objh, 'type', 'patch'); % objects of legend of type patch
set(objhl, 'Markersize', 12); % set marker size as desired
  11 comentarios
Gayan Lankeshwara
Gayan Lankeshwara el 21 de Jun. de 2020
I am working in Matlab 2019a, but Carl's code does not work in my case for a line plot.
objhl = findobj(objh, 'type', 'line'); %// objects of legend of type line
set(objhl, 'Markersize', 12); %// set marker size as desired
I mean, even if I change the value of MarkerSize, nothing changes.
Any update ?
Thanks.
Walter Roberson
Walter Roberson el 21 de Jun. de 2020
Are you using legend() with at least two output arguments? If you only have one output for legend then legend works differently.

Iniciar sesión para comentar.


Akira Agata
Akira Agata el 16 de Jul. de 2017
How about changing the marker size of your plot? Here is an example.
plot(magic(4),'o','MarkerSize',10);
l = legend('a','b','c','d');
  2 comentarios
Arnoud Jochemsen
Arnoud Jochemsen el 15 de Feb. de 2022
Note that this only works up to a certain size. When using 15 instead of 10, the legend markers are clearly smaller than the plot markers.
plot(magic(4),'o','MarkerSize',15);
l = legend('a','b','c','d');
Monique
Monique el 24 de Jul. de 2024
Editada: Monique el 24 de Jul. de 2024
I just discovered something interesting (likely a bug). If you ask for 2 outputs, then the legend markers are actually the correct size. No idea why. (This is R2024a).
plot(magic(4),'o','MarkerSize',15);
[l1,l2] = legend('a','b','c','d');

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 16 de Jul. de 2017
  2 comentarios
Fernon Ejikhoudt
Fernon Ejikhoudt el 11 de Jul. de 2018
I have the same problem and I'm using 2018a. Is there an answer to this. otherwise it almost makes the printed graphs useless because of the extremely tiny dots.
Walter Roberson
Walter Roberson el 11 de Jul. de 2018
Did you experiment with Kelly's legendflex() ?

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by