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

z80*_*080 3 graphics matlab powerpoint graph vector

我有Matlab代码,可生成一系列如下所示的子图:

在此处输入图片说明

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

在此处输入图片说明

这让我感到非常惊讶,因为我很长时间以来一直将Matlab图导出为EMF并将其集成到Powerpoint幻灯片中,以便在那里构建更复杂的图形,作为矢量图形可以在任何尺寸下很好地打印。无论我在Powerpoint中放大了多少,这些导入的EMF都可以很好地缩放并看起来平滑。

有人能猜出为什么这次没有将此图保存为矢量图形,而是(看上去)呈现为栅格吗?产生该图形的代码(基于Matlab命令subplotlinescatter)很长/很模糊,但是如果需要查找解决方案,我可以给出详细信息或简化。谢谢!

该站点上的其他类似线程也无助于解决此问题。

MrA*_*man 5

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

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

print('-painters',...)
Run Code Online (Sandbox Code Playgroud)

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

set(figure_handle,'renderer','painters');
Run Code Online (Sandbox Code Playgroud)

有关说明,请参见MATLAB文档

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

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

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

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

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