How to make '.' Markers transparent in a Scatter plot?

118 visualizaciones (últimos 30 días)
Zachary
Zachary el 22 de En. de 2021
Respondida: Zachary el 26 de En. de 2021
In R2016b, I am able to make Point ('.') Markers transparent in a Scatter plot by setting MarkerEdgeAlpha to a value < 1. For example:
%Generate 'n' random samples.
n = 10000;
x = randn(n,1);
y = randn(n,1);
%Plot.
figure
scatter(x, y, 'Marker', '.', 'MarkerEdgeAlpha', 0.5)
However in R2020b, it seems Point Markers can't be transparent. The same code produces:
Is there any way to make Point Markers transparent in a Scatter plot in R2020b, or was this feature deprecated? I'd rather use Point Markers than filled Circle Markers.

Respuesta aceptada

Zachary
Zachary el 26 de En. de 2021
Here's the answer from the Technical Support Case:
The current workaround for this is to use the 'o' marker symbol and divide its size to make it a similar size to the '.' marker symbol. This can be done by adding the following line to the code you sent in:
h = scatter(x, y, 'Marker', 'o', 'MarkerEdgeAlpha', 0.5);
h.SizeData = h.SizeData/9;

Más respuestas (1)

Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro el 22 de En. de 2021
Hello
Just tested this in R2019a and it works as for you, I have not yet upgraded to 2020.
Just an idea, try to grab the handle of the scatter plot
>> hs=scatter(x, y, 'Marker', '.');
Then you can investigate the properties of the handles directly, type hs. and then tab and a window with all the properties will appear, scroll down, in my case I found MarkerEdgeAlpha:
>> hs.MarkerEdgeAlpha
ans =
1
Which I could modify like this
>> hs.MarkerEdgeAlpha=0.5
hs =
Scatter with properties:
Marker: '.'
MarkerEdgeColor: 'flat'
MarkerFaceColor: 'none'
SizeData: 36
LineWidth: 0.5000
XData: [1×10000 double]
YData: [1×10000 double]
ZData: [1×0 double]
CData: [0 0.4470 0.7410]
Show all properties
>>
Perhaps you have to modify hs.MarkerFaceAlpha as well?
Hope that helps.
  2 comentarios
Zachary
Zachary el 22 de En. de 2021
Unfortunately, that doesn't seem to work. When I try...
%Generate 'n' random samples.
n = 10000;
x = randn(n,1);
y = randn(n,1);
%Plot.
figure
h = scatter(x, y, 'Marker', '.', 'MarkerEdgeAlpha', 0.5, 'MarkerFaceAlpha', 0.5);
get(h, {'MarkerEdgeAlpha' 'MarkerFaceAlpha'})
... I get...
ans =
1×2 cell array
{[0.5000]} {[0.5000]}
It looks like the object properties MarkerEdgeAlpha and MarkerFaceAlpha are correctly set, but when the Marker is '.' (Point), they don't apply.
Constantino Carlos Reyes-Aldasoro
Constantino Carlos Reyes-Aldasoro el 25 de En. de 2021
Well, then it may be that this has been disabled, try changing to a circle marker of small size. Not the same as a point, but may be the second best.

Iniciar sesión para comentar.

Categorías

Más información sobre Graphics Object Properties en Help Center y File Exchange.

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by