MATLAB Answers

How can I set transparency in 2D plot?

572 views (last 30 days)
ccs
ccs on 4 Mar 2015
Answered: Peter Rochford on 28 Nov 2017
I have lots of data points overlaid. I would like to know if the is a way in matlab to set the transparency of my plot to be able to visualize the density clearly?
Thanks

  0 Comments

Sign in to comment.

Accepted Answer

Chris McComb
Chris McComb on 4 Mar 2015
I don't think there's a way to make markers transparent. However, you could plot each data point as a small circle (using patch), and then set the transparency of the patch. This may be relevant if you go that direction: http://stackoverflow.com/questions/5893513/plot-circles-with-alpha-values-in-matlab

  4 Comments

Show 1 older comment
Chris McComb
Chris McComb on 5 Mar 2015
Not that I'm aware of. Although, I did just come across an undocumented solution that may help you: http://undocumentedmatlab.com/blog/plot-markers-transparency-and-color-gradient
Carl Witthoft
Carl Witthoft on 28 Jan 2016
I tested that referenced code in R2015a with complete success.
Mike Garrity
Mike Garrity on 28 Jan 2016
You can't set the transparency of the markers that plot creates. In fact, plot doesn't really have any support for transparency yet.
But as of R2015b, you can set transparency for the markers that scatter creates. That means that you could do this:
x = 1:10;
y = rand(1,10);
h = plot(x,y);
hold on
scatter(x,y,150,'filled', ...
'MarkerFaceAlpha',3/8,'MarkerFaceColor',h.Color)
hold off

Sign in to comment.

More Answers (1)

Peter Rochford
Peter Rochford on 28 Nov 2017
I have written a collection of Matlab functions for creating semi-transparent markers in plots and legends. The files are available from MATLAB Central as the MarkerTransparency package. A few examples of how to use these functions are included in the download and there is also a Wiki on GitHub. A major benefit of this package is it enables the user to have the semi-transparent markers also appear in the legend.

  0 Comments

Sign in to comment.

Sign in to answer this question.