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

조회 수: 131 (최근 30일)
Zachary
Zachary 2021년 1월 22일
답변: Zachary 2021년 1월 26일
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.

채택된 답변

Zachary
Zachary 2021년 1월 26일
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;

추가 답변 (1개)

Constantino Carlos Reyes-Aldasoro
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
Zachary
Zachary 2021년 1월 22일
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
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Graphics Object Properties에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by