Linux® 上用来实现数据的图像可视化的应用程式有很多,从简单的 2-D 绘图到 3-D 制图,再到科学图像编程和图像模拟。幸运的是,这方面的工具备很多开放源码实现,包括 gnuplot、GNU Octave、Scilab、MayaVi、Maxima 等。每个工具都有自己的优缺点,并且都是针对不同的应用程式而设计的。对这些开放源码图像可视化工具进行一下探索,有助于我们更好地决定哪个工具最适合我们的应用程式。
可视化工具的简短列表
在本文中,将对很多流行的 Linux 数据可视化工具进行一下调查,并对其中一些工具进行更深入的探讨。例如,某个工具是否为进行数值计算而提供了一种语言?这个工具是交互式的还是提供了一种批处理模式来单独进行操作?能够使用这个工具进行图像或数字信号处理吗?这个工具是否提供了语言绑定来支持和用户应用程式的集成(例如 Python、Tcl、Java 编程语言等)?另外还将展示一些工具的图像化处理能力。最后,将分析每个工具的长处,从而帮助我们确定哪个工具最适合完成计算任务或数据可视化。
在本文中所探索的开放源码工具包括(同时还给出了每个工具所使用的许可证):
- Gnuplot(GPL)
- GNU Octave(GPL)
- Scilab(Scilab)
- MayaVi(BSD)
- Maxima(GPL)
Gnuplot
Gnuplot 是个很好的可视化工具,他从 1986 年开始就存在了。假如没有 gnuplot 的图,就很难阅读论文。尽管 gnuplot 是命令行驱动的,但是他也在不断发展,现在也能够支持很多非交互式的应用程式了,例如他能够作为一个 GNU Octave 的绘图引擎使用。
gnuplot 具备很好的可移植性,能够在 UNIX®、Microsoft® Windows®、 Mac OS® X 和很多其他平台上运行。他能够支持从 postscript 到新近的 PNG 等极为广泛的输出格式。
gnuplot 能够以批处理模式进行操作,提供了一个命令脚本来生成一个图像,也是以非交互式模式来运行的,这让我们能够尝试一下他的特性来了解他们绘图的效果。
在 gnuplot 中有一个对应于 UNIX 的数学库的标准的数学库能够使用。函数的参数支持整型、实型和复型。能够将数学库配置成弧度或角度(默认为弧度)。
为了进行绘图,gnuplot 能够使用 plot 命令生成 2-D 图像,或使用 splot 命令生成 3-D 图像(作为 2-D projection)。使用 plot 命令,gnuplot 能够在直角二维坐标系中进行操作。splot 命令默认使用的是笛卡儿坐标系,但是也能够支持球面或柱面坐标系。也能够在图像中绘制等高线(如下面的图 1 所示)。有一种新风格的绘图 pm3d 能够支持绘制使用调色板进行映射的 3-D 和 4D 数据作为地图或地表图来使用。
下面是个简单的 gnuplot 例子,他给出了一个具备等高线和隐线消除的 3-D 图像。清单 1 给出了所使用的 gnuplot 命令,图 1 给出了所生成的图像结果。
清单 1. 简单的 gnuplot 函数图
set samples 25
set isosamples 26
set title "Test 3D gnuplot"
set contour base
set hidden3d offset 1
splot [-12:12.01] [-12:12.01] sin(sqrt(x**2 y**2))/sqrt(x**2 y**2)
|
清单 1 充分显示了 gnuplot 的命令集是多么简单。采样速度和绘图密度是由 samples 和 isosamples 决定的,标题是由 title 参数为图像提供的。同时还启用了基本的等高线和隐线消除特性,最终的绘图是利用 splot 命令使用数学库内部的函数来创建的。结果如图 1 所示。
图 1. gnuplot 的一个简单绘图
除了创建函数图之外,gnuplot 还能够很好地对文档中包含的图像进行绘图。考虑如清单 2 所示的 x/y 数据对(这个文档的一个简短版本)。这个文档中给出的数据对表示一个两维空间中的 x 和 y 轴的数据。
清单 2. gnuplot 的示例数据文档(data.dat)
88 99
79 98
76 89
60 85
...
60 22
|
假如希望在两维空间中绘制这些数据,并将每个数据点使用一条线连接起来,就能够使用清单 3 给出的 gnuplot 脚本。
清单 3. 对清单 2 中的数据进行绘图所使用的 Gnuplot 脚本
set title "Sample data plot"
plot 'data.dat' using 1:2 t 'data points', "data.dat" using 1:2 t "lines" with lines
|
结果如图 2 所示。注意 gnuplot 自动给出了轴的刻度,但是假如需要标注图像的位置,就能够对其进行控制。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




