Установка прозрачности маркера И размера маркера одновременно в легендах - PullRequest
0 голосов
/ 06 февраля 2020

В моей легенде я пытался контролировать размер маркера и его прозрачность. Мне кажется, что это невозможно сделать, по крайней мере, в 2016a, поскольку они требуют прохождения двух и только одного выходных данных из легенды. Код ниже показывает минимальный пример с комментариями. Любая помощь будет благодарна за то, как эти обе цели могут быть достигнуты одновременно.

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...