Matlab图保存为(矢量)EMF,但呈现为栅格

时间:2018-06-17 10:10:57

标签: matlab vector graph graphics powerpoint

我有Matlab代码,它产生一系列子图,如下所示:

enter image description here

当我将其保存为EMF文件(通常是矢量格式)并插入Powerpoint或使用Inkscape进行查看时,然后在图像上放大,它看起来像素化,并且显然由单个封装对象组成,而不是许多小图形对象:

enter image description here

这对我来说非常令人惊讶,因为我长期以来一直将Matlab图输出为EMF并将它们集成到Powerpoint幻灯片中,以便构建更复杂的图形,作为矢量图形,可以在任何尺寸下打印得很好。无论我在Powerpoint中放大了多少,这些导入的EMF也可以很好地缩放并且看起来很平滑。

有人可以猜到为什么在这种情况下,这个情节不是保存为矢量图形而是(因为它看起来)呈现为光栅?生成此图的代码(基于Matlab命令subplotlinescatter)相当长/不优雅,但我可以提供详细信息或简化,如果需要找到解。谢谢!

此站点上的

Other类似线程无法解决此问题。

1 个答案:

答案 0 :(得分:4)

我相信我之前曾遇到过此问题。如果与我面临的问题相同,则与用于保存绘图的渲染器有关。尽管在导出到矢量文件时它应该自动选择painters渲染器,但我有实例使用openGL渲染器来代替,这导致使用了位图。我不完全确定为什么会发生这种情况-对于特别复杂的图形,可能会恢复为openGL以避免令人讨厌的大型或复杂矢量文件。

如果您使用的是print命令,则可以强制其使用painters算法,如下所示:

print('-painters',...)

如果要使用“文件”>“另存为...”进行保存,我相信为图形设置渲染器应该可以:

set(figure_handle,'renderer','painters');

为解释起见,根据MATLAB documentation

  

-opengl'-OpenGL渲染器。保存位图图像时,请使用此渲染器。即使使用矢量格式,OpenGL也会生成位图图像,这可能会限制您在其他应用程序中编辑图像的程度。

     

'-painters'-画家渲染器。保存矢量图形文件时,请使用此渲染器。如果保存到矢量图形文件,并且图形RendererMode属性设置为'auto',则打印会自动尝试使用Painters渲染器。如果要确保输出格式是真实的矢量图形文件,请指定Painters渲染器。例如:

     

print('-painters','-deps','myVectorFile')

     

如果未指定渲染器,则打印会自动使用适当的渲染器来生成请求的输出格式。但是,如果您为图形设置了Renderer属性,则打印在生成输出时将使用该渲染器。

编辑:另一个选择是使用“复制图形”命令(“编辑”>“复制图形”)-这应将图形复制为EMF文件,并应遵循图形的渲染器设置。