这有点像是一个观点问题,所以我会尝试以一种可控的方式来表达它。
总的来说,我非常喜欢pgfplots
和LaTeX
,但最近我一直在思考它们的实用性和实际用例。更具体地说,我一直在寻找用于科学数据的替代绘图系统。我目前的方法 - 因为我通常用python编码 - 是用python
(matplotlib
但我肯定会转到seaborn
或其他方法)进行外部数据可视化,当我需要绘制出版级图表时,我会python
以受控的方式导出我的数据,将数据放在单独的.dat
文件中,以便pgfplots
于获取,并且通常以非常精确的方式设置数据,因为与或LaTeX
相比,在中进行计算是绝对不行的。我还发现我必须手动限制数据文件中的点数,因为与例如相比,它很慢而且很重。python
R
pgfplots
matplotlib
所以我认为这证实了我的观点,那就是这个过程有点繁琐。
我的问题:
是什么存在的理由数据可视化领域有哪些优势pgfplots
?更具体地说,pgfplots
与其他替代方案相比,它在哪些用例中表现突出?
答案1
最近,我更多地参与 Python 开发(作为科学我的专业是编程、为 Python 编写包等等)并且我已经使用TikZ
基于工具十多年了,现在我可以提供我自己的观点。
首先,你不能用 进行严肃的数值计算TeX
。在某种程度上,你可以用pgfplots
它的内部fpu
格式进行计算,该格式尽可能地符合 IEEE 标准。但它还没有达到生产就绪状态。考虑到它是由一个人维护的,我认为拥有一个绘图补丁并且你可以在 内得到一个表面图已经很不可思议了。TeX
此外,就资源而言,你可以在单个 PDF 页面中挤入的数据量甚至远远不能满足今天的标准。你提到的可视化通常源自海量数据集和非常复杂的计算,而这些计算是TeX
无法实现的。此外,每天都会出现一种新的交互式工具,我非常喜欢bokeh
Python 中的包。如果我没有排版任何东西,这是我最近常用的工具。
这个问题已在本网站上讨论过多次,但总结起来就是:TeX
过时、晦涩且无人问津。如果与 Python 或 R 等当代工具相比,其编程便利性方面已无可挑剔。大多数情况下,它只是一堆烦人的 token 收集和扩展。
这完全没问题,因为它只做一件事:排版页面。而且它做得非常出色,毫无疑问,它仍然是最好的。但在我看来,这应该是其他人的错,而不是 的成功。因为其他各方,尤其是学术界作为 的主要消费者,没有立足于专业的“现代”立足点,从而切断了它与编程语言所有进步的联系,TeX
这确实是一种耻辱。TeX
TeX
那你为什么还要费心使用pgfplots
?主要原因与上述讨论有关。TeX
是排版方面的主流,而集成的绘图工具对于获得匹配的图形至关重要。我跳过了为什么从其他来源复制/粘贴看起来非常糟糕的论点,而这正是这些工具存在的原因。在过去,PSfrag
尝试了类似的事情,只是通过其 TeX 排版版本在 EPS 图像中替换文本部分。但那并不够成功。使用像TikZ
和这样的工具,pgfplots
您可以使用非常方便的 API 来PostScript
插入矢量图形。但让我强调一下,这只是为了生成与其余部分相匹配的可视化文档。这些软件包不适用于通用图形软件。事实上,TikZ
递归实际上是基于这一事实的。
“TikZ 不是一个绘画程序“ (德语:TikZ 不是绘图软件。)
这些工具旨在实现视觉上令人惊叹的文档排版。如果您拥有的数据在 R 或 Python 的功能范围内,那么pgfplots
这些 R 或 Python 软件包中的任何一个都无法与您从 获得的图像质量相匹配pgfplots
。我已经用TikZ
和排版了我的论文pgfplots
,其中的图像带有经过仔细下采样的数据,只是为了能够使用这些工具,结果令人惊叹。但我过去常常pythontex
使用我的 Python 脚本并在那里完成繁重的工作并使用这些结果。我没有输入 195 行matplotlib
并得到一个平庸的线图,而是输入了 10 行pgfplots
,在视觉质量方面获得了很好的结果。
对于更强大的图形,我们还有PSTricks
,,Asymptote
但METAPOST
它们没有附带方便的TikZ
API,这很不幸。我们只能希望。