Rendering issues in Matlab R2014b version when using patch
1 次查看(过去 30 天)
显示 更早的评论
I am using patch to shade an area in a graph. The code that I am using is simple:
lm = 0;
s = 1:1000;
d = [ones(1, 100) zeros(1, 800) -1*ones(1, 100)];
xdata = [s(1) s s(end)];
ydata = [lm d lm];
patch(xdata, ydata, ones(size(xdata)));
In the attachment, the left figure is produced from R2014b version and the right from version R2012b.
Is there a workaround to deal with this problem? Have you also noticed it?
Thank you very much in advance.
0 个评论
回答(3 个)
Titus Edelhofer
2014-12-5
Hi,
I think you need to add the line at the zero:
lm = 0;
s = 1:1000;
d = [ones(1, 100) zeros(1, 800) -1*ones(1, 100)];
xdata = [s(100) s(1) s s(end) s(end-99)];
ydata = [lm lm d lm lm];
patch(xdata, ydata, ones(size(xdata)));
I'm not sure why it works fine in 12b ...
Titus
4 个评论
Mike Garrity
2014-12-5
编辑:Mike Garrity
2014-12-5
It sounds like another instance of this bug, but you should send it to support to make sure they're tracking it.
I think that one had to do with multiple edges which were colinear, but didn't have coincident vertices.
matt dash
2014-12-5
I suppose this qualifies as a bug, but it seems like a bad coding practice. If you know you want the patch to produce a series of bars, like a histogram, a better option is (at least to me) to plot each bar as a face of the patch by supplying all 4 vertices. I don't think the overhead of making each bar a separate face of the patch will be noticeable, even for very complex plots.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Polygons 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!