我们从上一讲结束时的图像开始:
gnuplot> set samples 500
gnuplot> set xlabel "X"
gnuplot> set ylabel "Y"
gnuplot> set title "sin(5*x) 函数图像"
gnuplot> unset key
gnuplot> plot sin(5*x)
这里默认的 x 取值范围是从 -10 到 10。我们现在希望 x 的取值范围从 -2π 到 2π,这样函数图像可以正好包括十个周期。横坐标取值范围由 xrange 参数控制。还记得gnuplot里面所有参数都由 set 命令控制吗?取值范围由方括号内的一对数表示,两个数之间用冒号隔开:
gnuplot> set xrange [-2*pi:2*pi]
gnuplot> replot
(不要忘记,每一个和 x 坐标有关的参数,都对应有一个和 y 有关的参数,所以纵坐标的取值范围由 yrange 控制。)
现在横坐标取值范围已经符合我们的要求了,但是横轴上的刻度并不是我们想要的。我们不想要刻度出现在整数位置上,而是希望刻度为 π 的整倍数。另外,我们还希望两个主刻度之间 π/2 的位置有一个分刻度,分刻度只要有刻度就可以,没必要标出数字了。gnuplot里面,横轴主刻度和分刻度,分别用 xtics 和 mxtics 表示(m 表示 minor)。我们试试下面的命令:
gnuplot> set xtics pi
gnuplot> set mxtics 2
gnuplot> replot
这里的命令表示:横轴主刻度间隔为 π,每两个主刻度之间被分刻度分为2份。这组命令得到的图像如下:
现在刻度间隔对了,但是显示的数字并不是我们想要的。我们希望显示字符 π,而不是小数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> set ytics -1,0.5,1
gnuplot> replot
这里又用了 set ytics 命令的另一种形式(再次提醒一下, xtics 和 ytics 语法是完全一样的):后面跟了逗号隔开的三个参数。这三个参数分别表示:最小主刻度、主刻度步长、最大主刻度。图像如下:
现在我们完成了对于坐标轴的一些微调,图像看起来更顺眼了。
gnuplot> set samples 500
gnuplot> set xlabel "X"
gnuplot> set ylabel "Y"
gnuplot> set title "sin(5*x) 函数图像"
gnuplot> unset key
gnuplot> plot sin(5*x)
这里默认的 x 取值范围是从 -10 到 10。我们现在希望 x 的取值范围从 -2π 到 2π,这样函数图像可以正好包括十个周期。横坐标取值范围由 xrange 参数控制。还记得gnuplot里面所有参数都由 set 命令控制吗?取值范围由方括号内的一对数表示,两个数之间用冒号隔开:
gnuplot> set xrange [-2*pi:2*pi]
gnuplot> replot
(不要忘记,每一个和 x 坐标有关的参数,都对应有一个和 y 有关的参数,所以纵坐标的取值范围由 yrange 控制。)
现在横坐标取值范围已经符合我们的要求了,但是横轴上的刻度并不是我们想要的。我们不想要刻度出现在整数位置上,而是希望刻度为 π 的整倍数。另外,我们还希望两个主刻度之间 π/2 的位置有一个分刻度,分刻度只要有刻度就可以,没必要标出数字了。gnuplot里面,横轴主刻度和分刻度,分别用 xtics 和 mxtics 表示(m 表示 minor)。我们试试下面的命令:
gnuplot> set xtics pi
gnuplot> set mxtics 2
gnuplot> replot
这里的命令表示:横轴主刻度间隔为 π,每两个主刻度之间被分刻度分为2份。这组命令得到的图像如下:
现在刻度间隔对了,但是显示的数字并不是我们想要的。我们希望显示字符 π,而不是小数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> set ytics -1,0.5,1
gnuplot> replot
这里又用了 set ytics 命令的另一种形式(再次提醒一下, xtics 和 ytics 语法是完全一样的):后面跟了逗号隔开的三个参数。这三个参数分别表示:最小主刻度、主刻度步长、最大主刻度。图像如下:
现在我们完成了对于坐标轴的一些微调,图像看起来更顺眼了。