分享

Gnuplot(二)简单数据绘图/多组数据绘图/点线风格

 icewater1234 2014-08-20
本文大部分摘录于瞬间集博客:http://blog.sciencenet.cn/u/yusufma

gnuplot内含一个非常有用的帮助系统。
只要在gnuplot里输入:
gnuplot> help set xtics
就能得到完整的 set xtics 用法及实例。

好了,下面我们讲数据绘图。首先介绍我们的数据文件。这是一个关于北京市一年中每月平均降水量的数据,我们的数据以纯文本方式储存在文件名为 datafile.dat 的文件中,文件全文如下:
### 文件开始 ###
# 北京月平均降水量 (mm)
#
# 月份    降水量    
# ==============
1        2.5    
2        5.1    
3        10.2    
4        25.4    
5        27.9    
6        71.1    
7        175.3    
8        182.9    
9        48.3    
10       17.8    
11       5.1    
12       2.5    
### 文件结束 ###


数据分为两列,第一列为月份,第二列为降水量。以 # 符号开始的各行为注释,也就是说,这些行对绘图不构成任何影响。下面开始画图。
gnuplot> set xlabel "月份"
gnuplot> set ylabel "降水量(毫米)"
gnuplot> set title "北京市月平均降水量"
gnuplot> unset key
gnuplot> set xrange [0.5:12.5]
gnuplot> set xtics 1,1,12
gnuplot> plot "datafile.dat" 

这里我们看到,默认的数据作图是画出各数据点。如果我们希望得到数据连线呢?可以使用下面的命令:
gnuplot> plot "datafile.dat" with lines

with 命令后面跟的是画图方式,这里使用的是 lines 方式,也就是把各个数据用直线连接起来。gnuplot大约支持三十种画图方式,默认为 points 方式,我们以后会选择一些常用的方式来介绍。
现在问题来了:如何既得到连线,又得到数据点呢?对了,用 with linespoints
gnuplot> plot "datafile.dat" with linespoints

gnuplot里面有几个控制点和线画法风格的参数:
  • linestyle   连线风格(包括linetypelinewidth等)
  • linetype     连线种类
  • linewidth   连线粗细
  • linecolor   连线颜色
  • pointtype   点的种类
  • pointsize   点的大小
我们看下面的例子:
gnuplot> plot "datafile.dat" with linespoints linecolor 3 linewidth 2 pointtype 7 pointsize 2


这几个参数的用法不难理解,直接跟在 with 命令之后就可以了,但是2、3、7这些数字都代表什么意思呢?这些数字是代表不同画法风格的代码,具体某个数字代表什么意思,这个依赖于我们使用的 terminal(还记得我们在第二讲里曾经讲过的 terminal 吗?)拿我们现在正在使用的 wxt terminal 举例,如果想知道这些数字究竟代表什么意思,可以输入命令:
gnuplot> test
这样当前 terminal 会输出一个测试图:


测试图中包含当前 terminal 的风格代码实例。例如,左下角显示的是连线粗细,右边显示的是色彩和数据点显示风格对应代码。

最后,告诉大家一个好消息:gnuplot里面很多命令有缩写形式。例如上面例子中的绘图命令可以简写为:
gnuplot> plot "datafile.dat" w lp lc 3 lw 2 pt 7 ps 2
至于其他参数命令的缩写形式,相信不难猜出来,大家可以试验一下猜猜看。

实验中经常碰到的情况是,我们要同时处理多组数据。
例子:
gnuplot> plot "precipitation.dat" using 1:2 w lp pt 5, "precipitation.dat" using 1:3 w lp pt 7
这里我们用了一个新的命令:using。在我们的数据文件包含超过一组数据时,我们可以用 using 指定使用哪列数据。例如 using 1:2 表示使用第一列和第二列数据,第一列为横轴,第二列为纵轴。以此类推,using 1:3 表示使用第一列和第三列数据。如果想把多组数据绘制到一个图上,只要使用一个 plot 命令,后面跟多组数据,每组数据之间用逗号隔开就可以了。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多