10

以前我一直以光栅格式(JPG,PNG)导出 Matlab 图形

有没有办法以矢量格式(SVG)从 Matlab 导出绘图。我需要它将绘图插入到 LaTeX 文档中。

到目前为止,我发现的唯一一件事是mathworks的插件和stackexchange的答案,但这看起来太复杂了

4

7 回答 7

6

还有matlab2tikzmatlabfrag导出到带有注释的 eps 以导入到 LaTeX。

是我使用 matlabfrag 的示例。

我还与一位 Mathworks 工程师讨论过这个问题,他同意这种事情没有一个很好的工具,因为每个人都想用它做不同的事情(我已经提到了两种不同的 LaTeX 方法)。所以 imo 最好的办法是使用不同的工具,看看哪个最适合你。

大多数时候,我不得不对坐标轴、标签的字体大小等进行大量修改,才能得到我想要的(顺便说一句,调整图例是最大的地狱)。

于 2012-12-09T14:48:48.057 回答
4

我通常在 Latex 文档中使用这两个 Matlab 图。我通常使用的是.eps格式,是Matlab可以很好导出的矢量格式。您应该在 Matlab 中尽可能多地编辑它,并在图中使用代码或手册。然后只需转到文件 -> 导出设置并单击“扩展轴以填充图形”,配置您想要的任何内容并导出为 .eps,然后您可以将图像导入任何基于矢量的软件、Inkscape 或 Adob​​e Illustrator 以根据需要进行最终调整. 只需将 eps 撞到乳胶中,它就完美了。此外,pdflatex 通常会将 EPS 转换为 PDF,因此如果您想节省时间,可以先从 Inkscape 或 Illustrator 将其转换为 PDF。

于 2012-12-09T16:14:32.487 回答
3

对于我的出版物,我将绘图保存为 EPS(矢量化),然后在 Inkscape 中进行最后的润色。然后通过 Inkscape,您可以将其导出为 SVG 之类的东西。Inkscape 有很多工具可以方便地清理绘图(例如简化路径和着色)。

这就是我制作以下Ts图的方式:

Ts 上的正常冲击解

于 2012-12-09T15:55:12.047 回答
1

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

就像是:

figures = sort(findobj('MenuBar','figure'));
for ii = 1:length(figures)
    saveas(gcf,['Figures/',num2str(ii)],'eps')
end
于 2012-12-09T21:44:22.997 回答
0

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

它非常易于使用:将包含脚本的文件夹添加到您的 matlab 路径后,您可以执行以下操作

  plot2svg('myplot.svg',gcf);

将您当前的数字保存在 svg 中。(当然您可以将gcf(= GetCurrentFigure) 更改为另一个句柄以保存其他打开的图形。)

事实上,这是我发现以 PDE 工具箱生成的矢量方式图导出的唯一方法。

于 2012-12-09T19:42:06.480 回答
0

我已经在 .eps 中导出了一个 matlab 图形,然后使用 GIMP 将其转换为 .png。事实证明,这种方式获得的 .png 文件比直接从 MATLAB 图形文件通过 export 或 saveas 选项获得的 .png 文件质量要高得多。请注意,我在 GIMP 中打开 .eps 文件时使用了更高的分辨率。我还在 matlab 导出设置中选择了“缩放字体:自动”。我使用 pdf-latex

于 2013-01-03T17:21:48.567 回答
0

自 2014a 以来,Matlab 矢量图形在根级别被破坏。
所以不要费心从 .png 格式切换。

在 matlab 问答部分进一步参考我的忧郁问题: https ://se.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces

于 2016-12-20T15:45:39.387 回答