与导入 PDF 相比,PGFPlots/TikZ 有哪些优势?

与导入 PDF 相比,PGFPlots/TikZ 有哪些优势?

与导入由 生成的 PDF/PGF 相比,在 LaTeX 中直接使用pgfplots或之类的工具有哪些好处?tikzmatplotlib

这个答案认为主要原因是为了让图表与文档的其余部分相匹配。它还提到没有其他绘图包Rpython可以直接生成与 LaTeX 生成的图表具有相同高图像质量的图表pgfplots,但没有给出示例或理由。有证据支持这一说法吗?

另一个相关的问题是,将图表导出为 PGF 而不是 PDF 有什么理由吗?这条评论说原因是 PGF 将在导入 PDF 时在 LaTeX 中生成整个图形,即使usetex只会使用 LaTeX 来绘制图表的文本部分。但如果使用 LaTeX 绘图的主要原因是我们可以将这些图与图表的其余部分相匹配文本文档usetex正是这样做的。

我目前采用的制作带有图表的 PDF 文档的方法是:(i) 使用类似工具matplotlib或其他科学编程语言的绘图包生成图表,以便我可以在绘图之前进行计算或绘制重复图表;(ii) 导出到 PDF 文件并usetex在我想将字体与我的文档匹配时使用;(iii) 使用导入 PDF 文件\includegraphics并进行最后的调整。

这似乎运行得很好,我没有注意到任何图像质量问题或图表与文档的其余部分不匹配。

那么,还有其他我忽略的使用pgfplotsLaTeX 等原生绘图实用程序的原因吗?

答案1

欢迎来到 TeX.SE!我认为,只要你对制作和嵌入图表的方式感到满意,并对结果感到满意,这就是你要走的路。我个人使用 TiZ 和 pgfplots 可以绘制足够简单的图(在我从 pstricks 切换到那里之后)。我的主要动机是列表中没有的要点:

  1. 我不需要打开多个文件并进行调整。
  2. 如果我将图表包含在 Beamer 演示文稿中,它会自动使用正确的字体作为环境文档。如果我理解正确,如果我使用您建议的方法,我必须为 Beamer 演示文稿制作单独的 PDF。
  3. 我也使用一些宏。尽管我并不经常使用它们,但我发现有时通过宏定义一些符号很方便。我也可以在我的图表和图形中使用这个宏。
  4. 尽管这不是一个大问题,但当与其他人一起处理某个文件时,它就起作用了。我不必担心我的合作者可能没有从存储库下载另一个图。相反,一旦他们有了文件,他们就拥有了编译文档所需的一切。同样,我的合作者也可以以同样的方式添加图形和图,而不必担心这些问题。

话虽如此,我还要说一下,有足够复杂的图,我不会用 pgfplots 或 Ti 来做Z. 毕竟,LaTeX 不是计算机代数系统。

答案2

欢迎来到 TeX.SE!我认为你的问题本身没有默认答案。这更可能取决于你如何看待 TeX 本身。如果你只是将它视为一个格式化文本和构建文档的系统,你很可能会采用使用编程语言生成图表的工作流程,而不是与 TeX 紧密集成的系统。

作为信号处理专业的博士生,我通常采取的观点是:我使用 TeX 来格式化并以适当的方式呈现我的整个工作和结果。这意味着我不仅用 TeX 排版我的想法和论点,还可以用 TeX 排版我能想到的模拟结果和可视化。

话虽如此,在涉及情节时我通常会按照以下方式进行:

  1. 我编写了大量模拟脚本,这些脚本通常会生成几 MB 的文件,其中包含一些多维模拟结果及其参数。这些脚本往往需要很长时间的计算,并生成大量数据。
  2. 我编写了一个小得多的脚本来处理模拟数据,这个脚本产生了两个结果。首先,它产生了一些非常丑陋的图表,这些图表只能作为我快速调试 1 中的数据和模拟的手段。其次,它至少会产生一个 *.csv 文件,通常只有几 KB,只包含我真正想要绘制的数据和参数。这可能源于对 1 中的数据进行平均或应用某种其他类型的统计数据。
  3. 我使用这个 *.csv 文件通过从中加载数据来使用 PGF 生成图表,我可以轻松地将其插入海报模板、投影仪模板或纸张模板中,并且精心组合的宏和配色方案选择使一切看起来与手头的其余文档非常融合。

你可能会问,这种方法有什么好处,这是理所当然的,因为它似乎引入了一层额外的复杂性。我这样做的原因是按重要性升序排列的

  1. 它使模拟数据分析更加透明,因为它将数据生成与数据评估分开。
  2. 它让我的工作流程更加灵活,因为模拟和评估的分离允许其中一个改变而不会影响另一个。特别是当模拟需要很长时间时,将后处理与它们分离具有巨大的价值。
  3. 它迫使我思考模拟中的数据结构,从而产生更加结构化的工作流程。
  4. 将后处理(生成 *.csv 文件)与绘图分离,再次带来了更灵活的工作流程。生成所需的所有数据后,您无需再触碰它。它就在那里,您可以专注于 TeX 中的可视化。
  5. 所有数据可视化参数,因此图表的参数都集中在一个地方 - 在 TeX 代码中 - 这样就更容易避免迷失方向。

总而言之,它只是给你更多的自由,同时也强制执行更精简但结构化的工作流程,并将事物放在它们应该在的地方(IMHO),因为编程是为了数据生成,而 TeX 在使事物看起来很漂亮方面很神奇!:-)

编辑:与他人合作时,它也具有巨大的价值。如果您只提供原始或处理过的模拟结果(您可以使用 git 或任何其他类似工具很好地处理),其他人就可以更轻松地修改数据的呈现方式,因为他们不需要运行 TeX 之外的任何代码即可开始工作。

答案3

主要原因是为了匹配文本,正如您所说的,但也匹配箭头提示或其他类似的符号。

另一个原因(对我来说是有效的)是“没有其他可用的绘图工具”。

另一个优点是所有线条的宽度都相同。由外部工具生成的图表在纳入文档时通常会缩放以使其适合可用的文本宽度或类似宽度。这将改变其线条的宽度。

答案4

我推荐将输入文件(用于生成 PSTricks 图表)与主输入文件(用于编写主文档)分开,因为可以单独编译图表以生成 PDF 输出,因此

  • 编译主输入文件并导入 PDF 图表变得更快。

  • 我们可以在具有一致设置的多个项目中重复使用相同的图表。

  • 由于杂乱的图表代码不再存在,主输入文件变得更加可读且易于维护。我称之为关注点分离!

使用 PSTricks 创建的图表可以通过创建私有辅助包来使用主输入文件中使用的相同字体,该辅助包仅用于图表输入文件或主输入文件的字体包含。

相关内容