2015-04-23 41 views
7

Matlab中的补丁从单个三角形粘在一起。它们的边缘通常是不可见的,但是当我在矢量图形格式导出数字它们可以清楚地看出(不是整个图像被示出,只是一个放大部分)MATLAB:在作为矢量图形输出后可见的补丁边缘

edges of individual triangles

代码,以生成这是MWE:

xx = [0:1:100, 100:-1:0]; 
yy = [zeros(1,101), ones(1,101)]; 
p1 = patch(xx,yy,'b'); 
print('testPatch','-dpdf','-painters') 

复用功能fill行为相同。有没有办法避免这个bug,或者我必须在这种情况下使用位图吗?

编辑:一种解决方法是孵化区域,而不是填充它。这显然不总是可能的,但在我的情况下,它很好地工作,我可以坚持矢量图形。相关的FEX提交是http://www.mathworks.com/matlabcentral/fileexchange/30733-hatchfill

+0

我不确定是什么导致了这种情况,但是我在用圆形标记导出图时观察到了类似的行为。圆形标记最终看起来像由多个三角形组成的斑状多边形。 –

+1

我认为你描述的问题有一个简单的解决方案:不要使用'o'作为标记类型,而是使用'。'。据我所知,这对我来说是个诀窍。 – FliegenderZirkus

+1

我不会厌倦从Matlab FEX推荐'export_fig'。它出色的工作表现出色,比马耳他本身更好。试试看。 –

回答

0

plot2svg允许创建带有完整补丁的矢量图形文件(SVG)。我还会继续关注export_fig的更新,看起来Yair Altman是working on this issue。对Mathworks的解决方案不会屏住呼吸。

0

散乱的矢量图形输出(切片,三角形,矩形而不是联合对象)是R2014b图形引擎更新后的秘密功能之一。

我能够将这些三角形与以下python脚本一起使用,使用Inkscape系统调用 https://github.com/Sbte/fix_matlab_eps。 但是,这是解决方法,适用于简单的情节。这不是解决方案。

要么使用光栅输出,要么保存您的数据并使用python matplot软件。