Gnuplot科学绘图(四)——多组数据绘图

作者前言

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

 

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

 

之前讲了如何用gnuplot 进行数据绘图。实验中经常碰到的情况是,我们要同时处理多组数据。这一次我们来讲一讲,怎样把多组数据绘制到同一个图上。还拿城市降水量举例,下面是我们的数据文件,文件名是“precipitation.dat”:

 

### 文件开始###
# 各城市月平均降水量(mm)
#
# 月份北京上海
# ======================
1 2 . 5 38 .1
2 5 . 1 58 .4
3 10.2 81. 3
4 25.4 101.6
5 27.9 114.3
6 71.1 152.4
7 175.3 129.5
8 182.9 132.1
9 48.3 154.9
10 17.8 61. 0
11 5 . 1 50 .8
12 2 . 5 35 .6
### 文件结束###

我们在gnuplot 里面执行下面的命令:

gnuplot> set xlabel “月份”
gnuplot> set ylabel “降水量(毫米)”
gnuplot> set t i t l e “各城市月平均降水量”
gnuplot> set xrange [ 0 . 5 : 1 2 . 5 ]
gnuplot> set xtics 1 ,1 ,12
gnuplot> plot ” p r e c i p i t a t i o n . dat ” using 1 : 2 w lp pt 5 ,
> ” p r e c i p i t a t i o n . dat ” using 1 : 3 w lp pt 7

Gnuplot科学绘图(四)——多组数据绘图

 

这里我们用了一个新的命令:using。在我们的数据文件包含超过一组数据时,我们可以用using 指定使用哪列数据。例如using 1:2 表示使用第一列和第二列数据,第一列为横轴,第二列为纵轴。以此类推,using 1:3 表示使用第一列和第三列数据。如果想把多组数据绘制到一个图上,只要使用一个plot 命令,后面跟多组数据,每组数据之间用逗号隔开就可以了。

 

显然,这里的图例又把图像搞乱了。我们没有像以前那样把图例去掉,因为这里有两组数据,我们需要保留图例。怎么办呢?我们来使用下面的命令:

 

gnuplot> plot ” p r e c i p i t a t i o n . dat ” u 1 : 2 w lp pt 5 t i t l e “北京” ,
> ” p r e c i p i t a t i o n . dat ” u 1 : 3 w lp pt 7 t i t l e “上海”

Gnuplot科学绘图(四)——多组数据绘图

注意到了吗?这里我们使用了字母u 作为using 的缩写。另外,这里用了新的参数title。这里的title 和之前我们用过的set title 不同。set title 指定的是整个图的标题,而这里的title 跟在每一组数据参数后面,指定的是每组数据对应的图例中的title。这样,我们的图看起来整洁多了。

 

using 命令除了指定所用的数据列,还可以对数据进行运算操作。例如,我们现在还是绘制上面的数据,但是降水量单位使用英寸而不是毫米。我们知道,1英寸=25.4毫米,所以我们执行下面的命令:

 

gnuplot> set ylabel “降水量(英寸)”
gnuplot> plot ” p r e c i p i t a t i o n . dat ” u 1 : ( $2 / 2 5 . 4 ) w lp pt 5 t i t l e “北京” ,
> ” p r e c i p i t a t i o n . dat ” u 1 : ( $3 / 2 5 . 4 ) w lp pt 7 t i t l e “上海”

Gnuplot科学绘图(四)——多组数据绘图

 

在对特定列的数据进行运算操作时,我们需要在列号之前加上$ 符号,这样表示该数据的值。虽然这里的例子是同一个文件里的多组数据,但是如果数据存在多个文件里,这里的命令同样适用。

 

本文整理自科学网马欢老师的博客,感谢原作者的分享。

想看到Gunplot实际操作?欢迎关注“基于CP2K电子结构理论计算线上培训班”第二讲Linux入门知识。

 

主讲:兰晶岗,苏黎世大学博士,导师为从头算分子动力学领域世界顶尖学者Hutter教授,长期从事从头算分子动力学,固-气-液界面,电化学,振动光谱模拟相关研究。CP2K开发和应用者。

课程试听:https://ke.qq.com/course/270047

原创文章,作者:菜菜欧尼酱,如若转载,请注明来源华算科技,注明出处:https://www.v-suan.com/index.php/2023/12/01/2f5dc75a4b/

(0)

相关推荐

发表回复

登录后才能评论