Linux®上用来实现数据的图形可视化的应用程序有很多,从简单的2-D绘图到3-D制图,再到科学图形编程和图形模拟。幸运的是,这方面的工具有很多开放源码实现,包括gnuplot、GNUOctave、Scilab、MayaVi、Maxima等。每个工具都有自己的优缺点,并且都是针对不同的应用程序而设计的。对这些开放源码图形可视化工具进行一下探索,有助于我们更好地决定哪个工具最适合我们的应用程序。
可视化工具的简短列表
在本文中,将对很多流行的Linux数据可视化工具进行一下调查,并对其中一些工具进行更深入的探讨。例如,某个工具是否为进行数值计算而提供了一种语言?这个工具是交互式的还是提供了一种批处理模式来单独进行操作?可以使用这个工具进行图像或数字信号处理吗?这个工具是否提供了语言绑定来支持与用户应用程序的集成(例如Python、Tcl、Java编程语言等)?另外还将展示一些工具的图形化处理能力。最后,将分析每个工具的长处,从而帮助我们确定哪个工具最适合完成计算任务或数据可视化。
在本文中所探索的开放源码工具包括(同时还给出了每个工具所使用的许可证):
Gnuplot(GPL)
GNUOctave(GPL)
Scilab(Scilab)
MayaVi(BSD)
Maxima(GPL)
Gnuplot
Gnuplot是一个非常好的可视化工具,它从1986年开始就存在了。如果没有gnuplot的图,就很难阅读论文。尽管gnuplot是命令行驱动的,但是它也在不断发展,现在也可以支持很多非交互式的应用程序了,例如它可以作为一个GNUOctave的绘图引擎使用。
gnuplot具有很好的可移植性,可以在UNIX®、Microsoft®Windows®、MacOS®X和很多其他平台上运行。它可以支持从postscript到新近的PNG等极为广泛的输出格式。
gnuplot可以以批处理模式进行操作,提供了一个命令脚本来生成一个图形,也是以非交互式模式来运行的,这让我们可以尝试一下它的特性来了解它们绘图的效果。
在gnuplot中有一个对应于UNIX的数学库的标准的数学库可以使用。函数的参数支持整型、实型和复型。可以将数学库配置成弧度或角度(默认为弧度)。
为了进行绘图,gnuplot可以使用plot命令生成2-D图形,或使用splot命令生成3-D图形(作为2-Dprojection)。使用plot命令,gnuplot可以在直角二维坐标系中进行操作。splot命令默认使用的是笛卡儿坐标系,不过也可以支持球面或柱面坐标系。也可以在图形中绘制等高线(如下面的图1所示)。有一种新风格的绘图pm3d可以支持绘制使用调色板进行映射的3-D和4D数据作为地图或地表图来使用。
下面是一个简单的gnuplot例子,它给出了一个具有等高线和隐线消除的3-D图形。清单1给出了所使用的gnuplot命令,图1给出了所生成的图形结果。
清单1.简单的gnuplot函数图
setsamples25
setisosamples26
settitle"Test3Dgnuplot"
setcontourbase
sethidden3doffset1
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)
8899
7998
7689
6085
...
6022
如果希望在两维空间中绘制这些数据,并将每个数据点使用一条线连接起来,就可以使用清单3给出的gnuplot脚本。
清单3.对清单2中的数据进行绘图所使用的Gnuplot脚本
settitle"Sampledataplot"
plot''data.dat''using1:2t''datapoints'',\
"data.dat"using1:2t"lines"withlines
结果如图2所示。注意gnuplot自动给出了轴的刻度,但是如果需要标注图形的位置,就可以对其进行控制。
图2.在gnuplot中使用数据文件进行简单的绘图
Gnuplot是一个很好的可视化工具,它非常出名,是很多GNU/Linux发行版的一部分。然而,如果希望进行基本的数据可视化和数值计算,那么GNUOctave可能是我们希望寻找的工具。
1
2
3
4
5
下一页>>
下载本文示例代码
阅读(441) | 评论(0) | 转发(0) |