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
(不要忘记,每一个和 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 语法是完全一样的):后面跟了逗号隔开的三个参数。这三个参数分别表示:最小主刻度、主刻度步长、最大主刻度。图像如下:
现在我们完成了对于坐标轴的一些微调,图像看起来更顺眼了。
- 地理快讯|刘彦随研究员荣获发展中国家科学院(TWAS)科学奖!
- 【黑科技】科学家用软件模拟蠕虫大脑 然后控制机器人移动
- 【科学漫画】人的寿命取决于什么?
- 北京大学2017“网络新青年”候选人 | 地球与空间科学学院曾亮
- 北京大学2017“网络新青年”候选人 | 环境科学与工程学院学生会
- 看《吴国盛科学博物馆图志》,带你来一场最美的科学之旅
- 受萤火虫启发 MIT科学家培育出发光植物
- 外立面设计不科学!业主气疯,直接“门窗封阳台”!
- 吃素营养不均衡?这样吃素才健康 科学饮食让你远离疾病
- 早餐牛奶配鸡蛋并不科学,这6类不健康的早餐你也经常吃!