可视化工具的简短列表在本文中,将对很多流行的 Linux 数据可视化工具进行一下调查,并对其中一些工具进行更深入的探讨。例如,某个工具是否为进行数值计算而提供了一种语言?这个工具是交互式的还是提供了一种批处理模式来单独进行操作?可以使用这个工具进行图像或数字信号处理吗?这个工具是否提供了语言绑定来支持与用户应用程序的集成(例如 Python、Tcl、Java 编程语言等)?另外还将展示一些工具的图形化处理能力。最后,将分析每个工具的长处,从而帮助我们确定哪个工具最适合完成计算任务或数据可视化。
在本文中所探索的开放源码工具包括(同时还给出了每个工具所使用的许可证):
- Gnuplot(GPL)
- GNU Octave(GPL)
- Scilab(Scilab)
- MayaVi(BSD)
- Maxima(GPL)
GnuplotGnuplot 是一个非常好的可视化工具,它从 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 函数图1
2
3
4
5
6
| 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)1
2
3
4
5
6
| 88 99
79 98
76 89
60 85
...
60 22
|
如果希望在两维空间中绘制这些数据,并将每个数据点使用一条线连接起来,就可以使用清单 3 给出的 gnuplot 脚本。
清单 3. 对清单 2 中的数据进行绘图所使用的 Gnuplot 脚本1
2
3
| 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 自动给出了轴的刻度,但是如果需要标注图形的位置,就可以对其进行控制。
图 2. 在 gnuplot 中使用数据文件进行简单的绘图Gnuplot 是一个很好的可视化工具,它非常出名,是很多 GNU/Linux 发行版的一部分。然而,如果希望进行基本的数据可视化和数值计算,那么 GNU Octave 可能是我们希望寻找的工具。 |