Why is the marker size in the legend of a SCATTER plot not equal to the marker size in the plot?

42 Ansichten (letzte 30 Tage)
If I execute the following code:
 
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])
the marker size in the legend is different from that in the scatter plot. How can I set these marker sizes to be equal when using the SCATTER function?

Akzeptierte Antwort

MathWorks Support Team
MathWorks Support Team am 18 Okt. 2013
The ability to automatically equalize the marker size of the legend and plot markers when using the SCATTER function is not available in MATLAB 7.9 (R2009b).
You may use either of the following workarounds to create a scatter plot in which the legend markers have the same size as the plot markers:
1. Manually set the marker size of the patch objects in the legend. Note that the marker area input to the SCATTER function is specified in square points, whereas the 'MarkerSize' property of a patch object is given in points:
 
M = findobj(h,'type','patch') % Find objects of type 'patch'
set(M,'MarkerSize', sqrt(150)) %Calculate marker size based on size of scatter points
Note that this workaround only applies to releases R2014a and prior. The legend graphics object hierarchy changed in R2014b.
2. Use the PLOT function instead of the SCATTER function:
 
figure; hold on
plot(1,1,'ko', 'MarkerSize', 12)
plot(1,2,'k+', 'MarkerSize', 12)
plot(2,1,'kx', 'MarkerSize', 12)
h = legend('Circle', 'Plus', 'X', 'Location', 'NorthEast');
set(h, 'FontSize', 14)
axis([0 3 0 3])

Weitere Antworten (0)

Produkte


Version

R2009b

Community Treasure Hunt

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

Start Hunting!

Translated by