在Matlab中的散点图中设置(MarkerFace)数据点的透明度

时间:2014-05-19 06:17:50

标签: matlab

我试图在Matlab中的散点图中设置(MarkerFace)数据点的透明度。我之前可以看到这个问题,大多数答案建议使用patch。这对我不起作用,有人能告诉我哪里出错了吗?谢谢!

h(1) = scatter(x1,y1,30,'MarkerEdgeColor',[0 0.5 0.5],'MarkerFaceColor', [0 0.5 0.5]);
hold on
h(2) = scatter(x2,y2,30,'MarkerEdgeColor','g','MarkerFaceColor', 'g');
h(3) = scatter(x3,y3,30,'MarkerEdgeColor',[0 0.3906 0],'MarkerFaceColor', [0 0.3906 0]);
h(4) = scatter(x4,y4,30,'MarkerEdgeColor',[0.4961 1.0000 0.8281],'MarkerFaceColor', [0.4961 1.0000 0.8281]);

PatchInPlot = findobj(h([1 2 3 4]), 'type', 'patch');
set(PatchInPlot, 'facea', 0.5)

1 个答案:

答案 0 :(得分:1)

FaceAlpha属性并不真正引用标记。它指的是标记跨越的区域,尝试

h = scatter(1:5,1:5,30,'MarkerEdgeColor',[0.4961 1.0000 0.8281],'MarkerFaceColor', [0.4961 1.0000 0.8281]);
PatchInPlot = findobj(h, 'type', 'patch');
set(PatchInPlot(2),'XData',[3.5;4.5;4.5;3.5;3.5],'YData',[3.5;3.5;4.5;4.5;3.5]);
set(PatchInPlot(2),'FaceColor',[1,0,0]);
set(PatchInPlot, 'facea', 0.2);

如果要绘制合理数量的点,可以考虑为每个标记创建一个贴片多边形,然后为每个多边形设置透明度。这可能不是唯一的方法,但我无法给出更好的答案。