包含 Matlab 图形的最佳方法是什么?

包含 Matlab 图形的最佳方法是什么?

哪种导出 Matlab 图形的方式可以提供最佳效果以纳入 LaTeX?是否可以导出可缩放矢量图形,甚至 LaTeX 图形?

答案1

如果您希望导出的图形类型受 支持matlab2tikz,则只有一种方法可以实现:matlab2tikz

你可以在 TikZ 中获得真正的矢量图形,也就是说,不需要摆弄 PostScript,不受限制latex,当你的字体或配色方案发生变化时不需要返回并重新制作图形,例如图例中的小改动都是就地完成的......

答案2

plot2svg自 2015 年 3 月起,关于在 MATLAB R2014b 中使用的一些更新:

Jürg 已经有一段时间没有更新他的出色脚本了。对于那些plot2svg在 R2014b 中使用时遇到错误的人,最简单的解决方案就是将str2num原始脚本中的每个函数更改plot2svgstr2double,问题就解决了。


(原帖)

matlab2tikz是小数据集图形的最佳矢量图形解决方案,正如 Pieter 在他的回答中所说。但是,在某些情况下,使用matlab2tikz生成代码在我看来并不是一个有效的解决方案。

matlab2tikz在这里我将展示两个使用导出图形并不是理想解决方案的例子。

  • 首先是使用像以下三角球体这样的大型数据集:

matlab2tikz生成了一个包含 3k 行代码的 tex 文件,并且编译一次花了几分钟。

matlab2tikz的输出给我:

错误领域


对于这些情况:要么您有一个大型数据集,如复杂的三角剖分/流场,要么您的代码中有诸如lighting、、等选项,或者其他 Axes/Patch/Quivergroup 属性调整。包含这些图形的最佳方式是:camprojFaceAlphaMATLAB

(步骤 1)使用plot2svg获取MATLABsvg 文件。

(步骤 2)使用 Inkscape 将其转换为 eps 或 pdf

(步骤 3)在任何 TeX 发行版的包中使用 eps 或\includegraphicspdfgraphicx

plot2svg是一个小的pkg,用于MATLAB生成可缩放矢量图形于尔格·施维策

有一个很大的线索如何在 LaTeX 中包含 SVG 图表?在 TeX.SE 上,第 2 步是接受的答案中的内容,如果你使用的是 Linux,一旦你安装了Inkscape,你可以使用这些 shell 脚本将 svg 转换为 pdf/eps/png 文件格式。(注意:链接中的 sh 使用的是 zsh shell)


使用此方法导出MATLAB数据的其他优点:

  • 对于科学出版物,大多数出版商仍在使用不包含tikzpkg 的古老 TeX 发行版,例如:要求作者在提交的作品中使用 PostScript 图形。

  • Inkscape 也有一个用于编辑 svg 文件的 UI。


答案3

有一个很棒的图书馆,叫pgf图,它可直接在 latex 中创建外观精美的图表。此包由 matlab2tikz 使用。您可以在 ascii 表中写入要绘制的数据,并直接在 latex 中创建图例、轴标签等,这非常类似于您在 Matlab 中编写的代码。

您可以轻松更改内容、颜色(例如黑白打印)、宽度和高度、分辨率等,而无需重新创建图形。

答案4

printOctave 中的命令允许多个设备进行 LaTeX 输出:-dtex-depslatex-depslatexstandalone-dpstex-dpslatex使用 Octave、gnuplot 和 LaTeX 制作图表Marco De la Cruz-Heredia 的著作中有一些很好的例子。

printMatlab中的命令可以写信给 eps(参见 Elenaher 的评论),所以这是另一种选择。

相关内容