Gnuplot—图形实用程序的鼻祖

作者: Joey Bernard

在这些专栏中,我介绍了几种不同的科学软件包,用于在许多不同的研究领域进行计算。我也研究了各种处理这些计算的图形表示的软件包。但是,我从未研究过的一个软件包是 gnuplot (http://www.gnuplot.info)。Gnuplot 自 20 世纪 80 年代中期以来就已存在,使其成为最古老的图形绘图程序之一。由于它已经存在很长时间了,因此已被移植到您可能想到的绝大多数操作系统。本月,我将介绍 gnuplot 的基础知识,并展示使用它的不同方法。

Gnuplot 是一个命令行驱动的程序。因此,它已被选择在其他几个应用程序(如 octave)中提供图形功能。因此,您可能已经在不知不觉中使用过 gnuplot。您可以通过多种方式使用 gnuplot。它不仅可以接受输入数据进行绘图,还可以绘制函数。Gnuplot 可以将其输出发送到屏幕(以静态文件格式显示或交互式显示),也可以将其输出发送到多种文件格式中的任何一种。此外,还可以使用许多函数来自定义您的绘图,例如更改标签和轴等。

让我们从安装 gnuplot 开始。二进制文件可用于许多不同的操作系统。大多数 Linux 发行版也应该附带 gnuplot 的软件包,因此安装应该非常容易。如果您想要最新的功能,您可以随时下载源代码并从头开始构建 gnuplot。

安装 gnuplot 后,您可以通过执行命令 gnuplot 来启动它。以这种方式执行时,您将进入交互式会话。让我们从尝试绘制一个基本函数开始。您应该能够绘制任何可以在 C、FORTRAN 或 BASIC 中接受的数学函数。这些数学表达式可以由内置函数(如 abs(x)cos(x)Bessel)构建而成。您可以使用整数、实数和复数数据类型作为这些函数的参数。

当使用 gnuplot 生成绘图时,您可以将所有命令放在单个文件中,并将它们作为脚本提交给 gnuplot,或者您可以在交互模式下启动 gnuplot,并在命令环境中一次发出一个命令。要运行 gnuplot 脚本,您只需在运行 gnuplot 时将其添加到命令末尾—例如


gnuplot script_to_run

当您在交互模式下运行 gnuplot 时,您可以使用命令 quit 退出会话。两个最基本的命令是 plotsplotplot 生成二维绘图,而 splot 生成三维绘图。要绘制一个简单的函数,您可以使用


plot sin(x)/x

这将生成一个绘图窗口,显示图形结果(图 1)。如果您想向绘图添加标题,您可以将此选项添加到 plot 命令中


plot sin(x)/x title "Example 1"

图 1. 绘图命令打开一个新窗口进行显示。

图 2. sin(x)/x 的基本绘图

您甚至可以在同一个绘图窗口中绘制多个表达式,使用


plot sin(x)/x title "Example 1", sin(x) title "Example 2"

图 3. 您可以在同一张图上绘制多个函数。

要绘制三维图形,只需将带有两个自变量的表达式提交给 splot,例如


splot x**2+y**2

图 4. Gnuplot 甚至可以处理 3-D 绘图。

如果您遇到问题,首先要查看的是内置的帮助功能。要获取有关 plot 命令的帮助,请执行命令


help plot

这将调出 gnuplot 关于 plot 命令的帮助文档。

如果您只是想看看某个表达式在绘图时的样子,这很好,但在实际科学中,您经常在实验中收集需要绘制的数据,以便您可以进行一些图形分析,并了解可能发生的事情。Gnuplot 也可以处理这种类型的绘图。为此,您只需提交包含要绘制的数据的文件的文件名。此文件的数据元素应按列排列,列之间用某种空白分隔。任何以 # 开头的行都被 gnuplot 视为注释并被忽略。如果您的数据文件包含多个数据列,您可以选择要提取哪些列作为 plot 或 splot 函数的选项进行绘制。例如,假设您有一个数据文件,其中包含每天的温度和压力。您可以使用以下命令绘制温度


plot "weather.dat" using 1:2 title "Temperature"

如果您想获得压力图,您可以使用


plot "weather.dat" using 1:3 title "Pressure"

如果您想绘制所有三列,您可以使用


splot "weather.dat"

当使用 gnuplot 自定义绘图时,有两种方法。第一种是使用 plotsplot 命令的选项。在这种情况下,您可以定义诸如绘图标题、轴或样式之类的东西。可用的样式可以是 lines、points、linespoints、impulses、dots、steps、fsteps、histeps、errorbars、xerrorbars、yerrorbars 或 xyerrorbars。要使用其中一种样式,您可以将选项与 with 关键字一起包含。因此,如果您想同时绘制图形的线条和点,您可以将 with linespoints 添加到您的 plot 命令中。您还可以使用这些选项的快捷方式。对于 with,您可以使用 w。对于 title 选项,您可以使用 t。对于前面显示的 using 选项,您可以使用 u

自定义绘图的第二种选择是使用 set 命令。使用此命令,您可以自由设置多个绘图选项的值。使用第二种选择,您可以设置所有类型的选项,例如标题、xlabel、yrange、xtics 或 key 等选项。例如,您可以使用以下命令设置 y 轴范围


set yrange [20:500]

设置各种绘图选项后,您需要告诉 gnuplot 重新绘制您正在处理的绘图。您可以使用命令


replot

许多这些 set 选项也使用快捷方式。例如,上述命令的快捷方式版本是


set yr [20:500]

Gnuplot 不仅是一个能够绘制数据和函数的实用程序,而且它还可以对正在绘制的数据进行一些分析。例如,您可以让 gnuplot 对数据进行曲线拟合。为此,您首先需要定义一个函数,以及一些初始猜测,然后再调用 fit 命令。一个例子看起来像这样


f1=a1*tanh(x/b1)
a1=300; b1=0.005;
fit f1(x) 'data_file.dat' using 1:2 via a1,b1

这告诉 gnuplot 尝试将文件 data_file.dat 中第 1 列和第 2 列的数据拟合到由 f1(x) 定义的函数。

当您为特定研究领域创建一个环境时,您可以使用 save 命令保存您可能已设置的所有设置。此命令实际上将您发出的所有 gnuplot 命令保存到文本文件中。此文本文件可以使用 load 命令加载到新的 gnuplot 会话中。这将获取保存到保存文件中的所有命令,并在新会话中重新运行它们。

您始终可以使用 show 命令查看已设置的选项。此命令显示当前会话中已设置的值。要查看所有选项,请使用命令 show all。当您使用选项时,有时可能会使自己陷入奇怪的状态。请记住,您始终可以使用 reset 命令重置使用 set 创建的任何值。此命令将这些会话选项重置为其默认值。

有时您可能需要与运行 gnuplot 的系统进行交互。在这些情况下,您需要从 gnuplot 启动 shell 会话。有两种方法可以做到这一点。第一种是使用命令 system。在这种情况下,您可以提交一个字符串,其中包含需要在 gnuplot 外部运行的系统命令。另一种选择是使用命令 !。此命令实际上只是命令 system 的快捷方式,并且这两个命令可以互换使用。

本文仅介绍了 gnuplot 中最基本的功能。绝对值得您花时间深入研究文档,看看它还能在分析数据方面为您做些什么。即使您不直接使用 gnuplot,了解更多关于它的信息也将帮助您在使用 octave 等其他应用程序时。将本文作为跳板,探索数据分析的无限可能。

加载 Disqus 评论