gnuplot 科学绘图(二)——坐标取值范围及刻度

作者前言

对于科技工作者来说,gnuplot 是一个非常好用的绘图软件。因为感慨于gnuplot 中文资料和文档的缺乏,我于数月之前在科学网博客开始撰写“谈谈gnuplot”系列博文,至今已写了四十五篇。

虽然还有不少细节问题没有涉及,但是我觉得这些博文已经可以构成一个比较完整的gnuplot 中文教程。对大多数用户来说,这一系列博文已经涵盖了日常应用的需要。为了方便大家阅读,我现在将这一系列博文集结编辑成为此教程,以CC BY-NC-SA 知识共享协议发布。

我们从上一讲结束时的图像开始,详见《Gnuplot科学绘图(一)——从安装到简单函数绘图》。

这里默认的 x 取值范围是从 -10 到 10。我们现在希望 x 的取值范围从 -2π 到 2π,这样函数图像可以正好包括十个周期。横坐标取值范围由 xrange 参数控制。还记得 gnuplot 里面所有参数都由 set 命令控制吗?取值范围由方括号内的一对数表示,两个数之间用冒号隔开:

gnuplot> set xrange [?2?pi :2? pi ]

gnuplot> replot

gnuplot 科学绘图(二)——坐标取值范围及刻度

(不要忘记,每一个和 x 坐标有关的参数,都对应有一个和 y 有关的参数,所以纵坐标的取值范围由 yrange 控制。)

现在横坐标取值范围已经符合我们的要求了,但是横轴上的刻度并不是我们想要的。我们不想要刻度出现在整数位置上,而是希望刻度为 π 的整倍数。另外,我们还希望两个主刻度之间 π/2的位置有一个分刻度,分刻度只要有刻度就可以,没必要标出数字了。gnuplot 里面,横轴主刻度和分刻度,分别用 xtics 和 mxtics 表示(m 表示 minor)。我们试试下面的命令:

gnuplot> set xtics pi

gnuplot> set mxtics 2

gnuplot> replot

这里的命令表示:横轴主刻度间隔为 π,每两个主刻度之间被分刻度分为 2 份。这组命令得到的图像如下:

gnuplot 科学绘图(二)——坐标取值范围及刻度

现在刻度间隔对了,但是显示的数字并不是我们想要的。我们希望显示字符 π,而不是小数3.14159。其实,set xtics 命令的形式并不是唯一的。我们试试下面的形式:

gnuplot> set xtics ("?2π" ?2?pi , " " ?1.5?pi 1 , "?π" ?pi ,\

> "" ?0.5?pi 1 , "0" 0 , "" 0.5? pi 1 , "π" pi , "" 1.5? pi 1 ,\

> "2π" 2?pi )

gnuplot> replot

这里 set xtics 命令直接规定了每个刻度的位置和显示的字符。每一个刻度对应三个参数:显示字符、刻度位置、刻度等级。刻度等级为 0 时表示主刻度,等级为 1 时表示分度。对于主刻度(等级为 0 时),表示等级的参数也可以省略不写。各个刻度的参数之间用逗号隔开。从上面的例子我们还看出,显示字符可以为空,也就是只标刻度,不显示字符。另外,如果命令太长,需要把一条命令分为多行来写,可以在换行时末尾加上反斜杠(\),表示这条命令还没有结束。这组命令得到的图像如下:

gnuplot 科学绘图(二)——坐标取值范围及刻度

现在横轴坐标已经完全符合我们要求了,我们把纵轴坐标也调整一下,因为我们不需要这么细的划分纵轴刻度:

gnuplot> set ytics ?1,0.5,1

gnuplot> replot

这里又用了 set ytics 命令的另一种形式(再次提醒一下,xtics 和 ytics 语法是完全一样的):后面跟了逗号隔开的三个参数。这三个参数分别表示:最小主刻度、主刻度步长、最大主刻度。图像如下:

gnuplot 科学绘图(二)——坐标取值范围及刻度

现在我们完成了对于坐标轴的一些微调,图像看起来更顺眼了。