哪种导出 Matlab 图形的方式可以提供最佳效果以纳入 LaTeX?是否可以导出可缩放矢量图形,甚至 LaTeX 图形?
答案1
如果您希望导出的图形类型受 支持matlab2tikz
,则只有一种方法可以实现:matlab2tikz
。
你可以在 TikZ 中获得真正的矢量图形,也就是说,不需要摆弄 PostScript,不受限制latex
,当你的字体或配色方案发生变化时不需要返回并重新制作图形,例如图例中的小改动都是就地完成的......
答案2
plot2svg
自 2015 年 3 月起,关于在 MATLAB R2014b 中使用的一些更新:
Jürg 已经有一段时间没有更新他的出色脚本了。对于那些plot2svg
在 R2014b 中使用时遇到错误的人,最简单的解决方案就是将str2num
原始脚本中的每个函数更改plot2svg
为str2double
,问题就解决了。
(原帖)
matlab2tikz
是小数据集图形的最佳矢量图形解决方案,正如 Pieter 在他的回答中所说。但是,在某些情况下,使用matlab2tikz
生成代码在我看来并不是一个有效的解决方案。
matlab2tikz
在这里我将展示两个使用导出图形并不是理想解决方案的例子。
- 首先是使用像以下三角球体这样的大型数据集:
matlab2tikz
生成了一个包含 3k 行代码的 tex 文件,并且编译一次花了几分钟。
- 第二种情况是当有光照、alpha 和模糊时Jürg Schwizer 的博客文章:
matlab2tikz
的输出给我:
对于这些情况:要么您有一个大型数据集,如复杂的三角剖分/流场,要么您的代码中有诸如lighting
、、等选项,或者其他 Axes/Patch/Quivergroup 属性调整。包含这些图形的最佳方式是:camproj
FaceAlpha
MATLAB
(步骤 1)使用
plot2svg
获取MATLAB
svg 文件。(步骤 2)使用 Inkscape 将其转换为 eps 或 pdf
(步骤 3)在任何 TeX 发行版的包中使用 eps 或
\includegraphics
pdfgraphicx
plot2svg
是一个小的pkg,用于MATLAB
生成可缩放矢量图形于尔格·施维策。
有一个很大的线索如何在 LaTeX 中包含 SVG 图表?在 TeX.SE 上,第 2 步是接受的答案中的内容,如果你使用的是 Linux,一旦你安装了Inkscape,你可以使用这些 shell 脚本将 svg 转换为 pdf/eps/png 文件格式。(注意:链接中的 sh 使用的是 zsh shell)
使用此方法导出MATLAB
数据的其他优点:
对于科学出版物,大多数出版商仍在使用不包含
tikz
pkg 的古老 TeX 发行版,例如:暹要求作者在提交的作品中使用 PostScript 图形。Inkscape 也有一个用于编辑 svg 文件的 UI。
答案3
有一个很棒的图书馆,叫pgf图,它可直接在 latex 中创建外观精美的图表。此包由 matlab2tikz 使用。您可以在 ascii 表中写入要绘制的数据,并直接在 latex 中创建图例、轴标签等,这非常类似于您在 Matlab 中编写的代码。
您可以轻松更改内容、颜色(例如黑白打印)、宽度和高度、分辨率等,而无需重新创建图形。
答案4
这print
Octave 中的命令允许多个设备进行 LaTeX 输出:-dtex
、-depslatex
、-depslatexstandalone
、-dpstex
和-dpslatex
。使用 Octave、gnuplot 和 LaTeX 制作图表Marco De la Cruz-Heredia 的著作中有一些很好的例子。
这print
Matlab中的命令可以写信给 eps(参见 Elenaher 的评论),所以这是另一种选择。