还有哪些编程语言具有用于绘制图形的 API?

还有哪些编程语言具有用于绘制图形的 API?

如果这里不适合提问,我深表歉意。如果是的话,请告诉我应该在哪里发布,我将不胜感激。

最近我遇到了一个问题我认为,如果我能够使用支持通过 API 编写图形的常规计算机编程语言(例如 Java、Python),这个问题就可以很容易地回答。

虽然我知道可以用 TeX 进行编程,尤其是 TikZ 支持这一点,但我总是感觉用 TeX 编程要复杂得多。

尽管我了解其他编程语言(Java、Python、C),但使用 TikZ 或 TeX 进行编程仍然感觉相当困难。例如,为了回答上述问题,我可以for对每一行进行一次循环,对每一列进行第二次for循环,然后在每个坐标处绘制一个矩形,该矩形的颜色由函数返回,ValueToColor(value)其中value是该特定单元格的值。但是,我不太清楚如何在 TikZ 或 Tex 中执行这些操作!

还有其他编程语言的 API 支持生成漂亮的图形吗?我想到的是R带有库的编程语言ggplot2,以及D3.js

答案1

正如前面所说,MetaPost 和 Asymptote 是最能回答您问题的人。

MetaPost 直接源自 Metafont,这是 Knuth 为字体设计创建的语言,也是我最喜欢的语言。语法与 Metafont 相同,但与生成位图字体的 MetaFont 相反,它默认输出 PostScript 图片(可以以 SVG 和 PNG 格式生成),可直接包含在 PDF 文件中。我发现它非常容易学习且非常高效。它最近被变成了一个 C 库(mplib),因此,被整合到 LuaTeX 引擎中。因此,它可以非常轻松地与 Context-MkiV 一起使用,也可以通过包与 LuaLaTeX 一起使用luamplib。到目前为止,它最大的缺点是它不是为 3D 绘图设计的(有些包存在,但我并不信服)。

MetaPost 反过来直接启发了另一种语言,即 Asymptote。但它的语法不同,类似于 C++,对于习惯使用 C 系列编程语言的人来说更为熟悉(我的情况不是这样)。最重要的是,它非常有效地支持 3D 绘图。所以每次我需要 3D 绘图时,我都会求助于 Asymptote。

两种语言都得到了积极的支持并且迅速发展。

要了解有关 MetaPost 的更多信息,作者提供的手册值得一读:https://www.tug.org/docs/metapost/mpman.pdf

一个很好的教程:通过实践学习 MetaPost,作者 André Heck,练习答案

此外Metafun 手册相当不错。Metafun 是 Context 中使用的 MetaPost 格式,但其中大部分内容对于 LaTeX 用户也很有用。

对于 Asymptote,其创建者的手册是必读之作。但要学习它,我发现从这两个网站的许多优秀示例中学习更有用:

http://www.piprime.fr/asymptote/(来自 Philippe Ivaldi,现为开发人员之一) http://marris.org/asymptote/index.html(源自法语 Gaétan Marris)。

答案2

对于专门的绘图任务,您可能会发现除 fpast 的答案中提到的语言之外的其他“语言”也很有用。例如,gnuplot用于绘制图(但asymptote也有一个强大的软件包可以处理这类问题),以及各种图表graphviz很好。只要稍微施加一点压力,就可以说服两者都使用 LaTeX 字体。

相关内容