将Matlab绘图导出为矢量格式的方法

10

之前我一直在用Matlab将图形以光栅格式(JPG,PNG)导出。

有没有办法可以将Matlab中的图形以矢量格式(SVG)导出?我需要将其插入到LaTeX文档中。

目前我找到的唯一方法是来自mathworks的插件和stackexchange的答案,但这看起来相当复杂。


1
需要使用 svg 吗?如果您想要导出以便在像Illustrator这样的程序中编辑图形,我发现将其导出为 .eps 格式非常有效。 - Jonas
2
@SalvadorDali,使用MATLAB文件交换中的SVG工具有什么问题吗?它看起来很简单。只需将所有相关的m文件保存在您的目录中,然后开始使用plot2svg... - Eitan T
2
还有 matlab2tikzmatlabfrag,它们可以将图形导出为带有注释的 eps 文件,以便导入 LaTeX。 - Gunther Struyf
matlab2tikz 看起来非常不错。 - ccook
7个回答

6

还有matlab2tikzmatlabfrag,可以导出带有注释的eps文件,以便导入LaTeX。

这里是我使用matlabfrag的一个例子。

我也与Mathworks工程师讨论过这个问题,他同意没有一个完美的工具适用于这种情况,因为每个人都想要完成不同的事情(我已经提到了两种不同的LaTeX方法)。所以,在我看来,最好的做法是尝试不同的工具,看看哪个最适合你。

大多数时候,我必须调整坐标轴、标签字体大小等很多细节才能达到我想要的效果(顺便说一下,调整图例是最大的麻烦)。


4

我通常在Latex文档中使用Matlab图表。我通常使用的是.eps格式,这是Matlab可以很好地输出的矢量格式。你应该在Matlab中尽可能多地编辑代码或手动制作图表。然后只需选择文件->导出设置,并单击“扩展轴以填充图像”,配置所需内容并导出为.eps,然后可以将图像导入任何基于矢量的软件(如Inkscape或Adobe Illustrator)进行最终调整。将eps插入到Latex中即可完美工作。此外,pdflatex通常会将EPS转换为PDF,因此如果要节省时间,您可以在Inkscape或Illustrator中先将其转换为PDF。


3

对于我的出版物,我将图形保存为矢量化的EPS格式,然后在Inkscape中进行最后的修饰。然后通过Inkscape,您可以将其导出到类似SVG的格式。Inkscape有很多工具可用于清理图形(例如简化路径和着色)。

这就是我制作以下T-s diagram的方式:

Normal-Shock Solutions on T-s


不客气。虽然它不是自动的,但它可以保持矢量化,同时允许您完成图片。 - ccook

1

.eps文件很容易导出并与LaTeX一起使用。我在每个项目中都使用一个函数来格式化和保存绘图到LaTeX项目中。它非常容易使用。以下行中的“eps”可以更改为任何Matlab图像类型。

类似于:

figures = sort(findobj('MenuBar','figure'));
for ii = 1:length(figures)
    saveas(gcf,['Figures/',num2str(ii)],'eps')
end

0

我目前使用FEX包plot2svg来完成你所提到的任务。

它非常容易使用:在将包含脚本的文件夹添加到Matlab路径后,您只需执行以下操作:

  plot2svg('myplot.svg',gcf);

保存当前图像为svg格式。当然,你可以将gcf(= GetCurrentFigure)更改为其他句柄来保存其他打开的图像。

事实上,这是我找到的唯一用于导出由PDE工具箱生成的矢量图的方法。


0

0

我已经将一个Matlab图形导出为.eps格式,然后使用GIMP将其转换为.png格式。结果发现,这种方式获得的.png文件比直接从MATLAB图形文件中通过导出或另存为选项获得的.png文件质量要高得多。请注意,我在GIMP中打开.eps文件时使用了更高的分辨率。此外,我在Matlab导出设置中选择了“按比例缩放字体”选项。我使用pdf-latex。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接