Matlab图中的半透明标记

Rug*_*man 10 matlab transparency matlab-figure

我想绘制带有填充标记的散点图并使其半透明,因此当两个或多个标记重叠时,重叠区域将更加不透明.

我天真地想

sg = scatter(rand(1000,1),rand(1000,1), 'filled');
alpha(0.5)
Run Code Online (Sandbox Code Playgroud)

会工作,但事实并非如此.也

set(get(sg, 'Children'), 'FaceAlpha', 0.2)
Run Code Online (Sandbox Code Playgroud)

不起作用.有任何想法吗?

小智 10

下面是一些示例matlab代码,它使用补丁对象制作透明的散点图:

x=randn(5000,1)*20;
y= randn(5000,1)*20;
t= 0:pi/10:2*pi;
figure();
for i=1:size(x)
    pb=patch((sin(t)+ x(i)),(cos(t)+y(i)),'b','edgecolor','none');
    alpha(pb,.1);
end
Run Code Online (Sandbox Code Playgroud)


abc*_*bcd 5

AFAIK,您无法更改绘图标记的Alpha值scatter.一种解决方案是patch自己绘制标记.可以为patch()对象设置Alpha值,当标记重叠时,您将获得所需的效果.但是,这可能会非常麻烦,需要根据您的需求进行定制.

请参阅此相关问题,其中问题中定义的函数正是如此.您可以将其作为起点并从那里开始工作.

  • 我断定没有答案(好吧,没办法设置绘图标记的alpha值),仍然使用我的ag_plot_little_circles函数. (3认同)