我需要在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
正如您所看到的,内部圆圈的边界比外部边界更微弱。我期待看到的是一个最前面的圆圈,它有一个完全黑色的边框,一个最后面的圆圈,内部有最透明的边框。
是否有人知道如何制作它以便在放置对象时绘制边框?那么边界是在透明物体前面绘制的,实际上是在顶部?
答案 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