Marker transparency AND marker size can't be set simultaneously in legends
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I've been trying to control both the marker size and their transparency, in my legend. It seems to me this cannot be done, at least in 2016a, as they require passing two vs just one outputs from 'legend'. The code below shows a minimal example, with comments. Any help would be appreciate on how these both aims can be achieved simultaneously.
clc
close all
x = 1:10;
plot1 = scatter(x, 1*x, 190, 'ob');
plot1.MarkerFaceColor = [1 0 0];
hold on;
plot2 = scatter(x, 1.05*x, 190, 'sr');
plot2.MarkerFaceColor = [0 0 1];
% make markers transparent
plot1.MarkerFaceAlpha = 0.2;
plot1.MarkerEdgeAlpha = 0.2;
plot2.MarkerFaceAlpha = 0.2;
plot2.MarkerEdgeAlpha = 0.2;
% with one attributed variable, legend markers inherit transparency from plot, but marker size cannot be set
objh_icons = legend({'one','two'});
PatchInLegend = findobj(objh_icons, 'type', 'patch');
set(PatchInLegend, 'Markersize', 23);
title('One passed variable: Transparency YES, marker size NO')
pause
% with two attributed variables, legend markers no longer inherit transparency from plot (and the commands below to set it manually don't work), but their size can now be set
[objh, objh_icons] = legend({'one','two'});
PatchInLegend = findobj(objh_icons, 'type', 'patch');
set(PatchInLegend, 'Markersize', 23);
set(PatchInLegend, 'facea', 0.2)
set(PatchInLegend, 'edgea', 0.2)
PatchInLegend(1,1).FaceAlpha = 0.2;
PatchInLegend(1,1).EdgeAlpha = 0.2;
PatchInLegend(2,1).FaceAlpha = 0.2;
PatchInLegend(2,1).EdgeAlpha = 0.2;
title('Two passed variables: Transparency NO, marker size YES')
0 comentarios
Respuestas (0)
Ver también
Categorías
Más información sobre Legend en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!