重叠透明对象上的边框正在消失

时间:2014-05-23 13:30:07

标签: matlab matlab-figure

我需要在MATLAB中的图形上显示几千个透明对象,每个对象都显示其边框。但是,当我使用填充绘制对象时,交叉点内部的边框会以某种方式被透明对象覆盖,即使其中一个对象位于顶部。这是一个代码示例,显示了我的意思:

t = linspace(0,2*pi,100);
s = linspace(0,2*pi,50);

eps = .35;

f = figure;
hold on;
c = [1.0 0.5 0.0];

for i = 1:1:length(s)
    x = eps*cos(t)+cos(s(i));
    y = eps*sin(t)+sin(s(i));
    fill(x,y,c,'EdgeColor','k','LineWidth',1,'facealpha',.25);
end

正如您所看到的,内部圆圈的边界比外部边界更微弱。我期待看到的是一个最前面的圆圈,它有一个完全黑色的边框,一个最后面的圆圈,内部有最透明的边框。

Example

是否有人知道如何制作它以便在放置对象时绘制边框?那么边界是在透明物体前面绘制的,实际上是在顶部?

1 个答案:

答案 0 :(得分:1)

您可以在调用fill后设置ZData:

for i = 1:1:length(s)
    x = eps*cos(t)+cos(s(i));
    y = eps*sin(t)+sin(s(i));
    z = ones(size(x))*i;
    h=fill(x,y,c,'EdgeColor','k','LineWidth',1,'facealpha',.25);
    set(h,'ZData',z);
end

enter image description here