我正在尝试从Matlab导出填充的轮廓图作为矢量图形以包含在Latex文件中。我当前的方法是:
contourf(x,y,v_mag,20), axis([0,width,0,height]),daspect('manual') ;
grid off
colormap jet
h = colorbar;
caxis([0 v_lid])
h.Label.String = 'Velocity Magnitude (m/s)';
set(gcf,'renderer','painters')
export_fig('-painters', '-transparent', 'pdf', 'filename.pdf');
这种方法的问题在于,它会产生如下所示的伪像(白线):
我知道这些白线是定义阴影区域的多边形,这些阴影区域具有不可见的边缘,并且与(according to here)并不完全重叠。该问题是由pdf查看器本身引起的,该查看器本身试图使屏幕(according to here)上显示的线条平滑。我的问题是,大多数查看文档的人不会知道这一点,也不会知道如何防止查看者这样做。所以我的问题是:
是否可以在没有这些伪像的情况下从Matlab创建填充轮廓图的矢量图形?
Eps产生相同的问题。我曾尝试使用SVG function,但没有任何运气。由于缩放引起的像素化,我试图避免使用栅格图形。任何建议都将不胜感激。
编辑-其他信息-使用Matlab v.2014b和Ghostscript v.9.15
最佳答案
这是一个非常令人沮丧的问题,似乎没有解决方案(甚至很少有解决方案的尝试),并且已经有很多年了。总而言之,Matlab无法处理输出无伪影的轮廓图或曲面图(任何具有复杂网格或透明度的图)。
我可以建议一个简单的解决方法,该方法可以在大多数情况下使用,其中不需要完美保留基础轮廓图的颜色或细节。
这也使您可以使用Illustrator压缩pdf之类的功能。
如果不想通过矢量化光栅输出来玩弄,也可以简单地替换步骤3-4,并将光栅彩色图像与矢量化的线形图像合并。对于复杂的轮廓图,它可以很好地为您提供清晰的线条,但可以压缩基础颜色。
关于Matlab:如何避免在填充轮廓图中出现伪影,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28325901/