清单 3. 对清单 2 中的数据进行绘图所使用的 Gnuplot 脚本 结果如图 2 所示。注意 gnuplot 自动给出了轴的刻度,但是如果需要标注图形的位置,就可以对其进行控制。 图 2. 在 gnuplot 中使用数据文件进行简单的绘图 Gnuplot 是一个很好的可视化工具,它非常出名,是很多 GNU/Linux 发行版的一部分。然而,如果希望进行基本的数据可视化和数值计算,那么 GNU Octave 可能是我们希望寻找的工具。
GNU Octave GNU Octave 是一种高级语言,主要设计用来进行数值计算,它是 MathWorks 出品的 Matlab 商业软件的一个强有力的竞争产品。除了 gnuplot 所提供的简单命令集之外,Octave 还为进行数学编程提供了一种丰富的语言。我们甚至可以使用 C 或 C++ 语言编写自己的应用程序,然后与 Octave 进行交互。 Octave 最初是在 1992 年作为化学反应堆设计教科书的一个辅助软件而编写的。其作者希望能够帮助学生解决反应堆的设计问题,而不用调试 Fortran 程序。结果获得了一种非常有用的语言,并为解决数值问题提供了交互式环境。 Octave 可以以一种脚本化模式非交互地进行操作,或者通过 C 和 C++ 语言绑定进行操作。Octave 本身就有一种非常丰富的语言,该语言看起来与 C 语言非常类似,并有一个很大的数学库,包括信号和图像处理、音频处理以及控制理论所使用的一些特殊函数。 由于 Octave 使用了 gnuplot 作为其后端实现,因此使用 gnuplot 可以绘制的所有东西都可以使用 Octave 进行绘制。Octave 的确有一种更丰富的语言来进行计算,它有很多明显的优点,但是仍然有 gnuplot 的一些限制。 在下面这个 Octave-Forge Web 站点上提供的例子中(SimpleExamples),绘制了一个 Lorentz Strange Attractor。清单 4 给出了在使用 Cygwin 的 Windows 平台上 Octave 所使用的交互式对话框。这个例子展示了 lsode 的用法,这是一个常见的微分方程解算器。 清单 4. 使用 Octave 呈现 Lorentz Strange Attractor 图 3 给出的图是清单 4 中 Octave 代码的输出结果。 图 3. 使用 Octave 绘制的 Lorentz 图 GNU Octave(与 gnuplot 一致)可以使用 multiplot 特性在一个页面上呈现多个图形。使用这个特性,就可以定义要创建多少图形,然后使用subwindow 命令来定制特定的图形。在定义好子窗口之后,就可以正常地生成自己的图形,然后再跳到下一个子窗口中(如清单 5 所示)。 |