gnuplot 入门教程 1

gnuplot 入门教程 1几年前写的一篇短文,今天找东西时翻出来了,感觉写的还是比较实用的。放在这里供有需要的人参考。现在在网上可以找的科学作图软件有不少,其中不乏优秀者,Win平台上有大名鼎鼎的Origin、Tecplot、SigmaPlot等,类UNIX上有LabPlot、gnuplot等。其他的常见的计算软件如Matlab、Mathematica、Maple、Scilab、IDL、Maxima等也都对科学作图

大家好,又见面了,我是你们的朋友全栈君。

几年前写的一篇短文,今天找东西时翻出来了,感觉写的还是比较实用的。放在这里供有需要的人参考。

现在在网上可以找的科学作图软件有不少,其中不乏优秀者,Win平台上有大名鼎鼎的OriginTecplotSigmaPlot等,类UNIX上有LabPlotgnuplot等。其他的常见的计算软件如MatlabMathematicaMapleScilabIDLMaxima等也都对科学作图有很好的支持,甚至于只要稍加努力使用MSExcel也可以做出不错的图来。但是笔者最喜爱的工具还是gnuplot。gnuplot 是典型的UNIX 哲学的产物,小巧,灵活,擅长于与其他工具协同工作。本人使用gnuplot 已经有1年有余,积累了些经验,下面的内容主要是我1年多来使用gnuplot所做笔记的一个总结,当然,在成稿过程中也将gnuplot 的手册又来回翻了几遍。

gnuplot是一个命令行驱动的科学绘图工具,可将数学函数或数值资料以平面图或立体图的形式画在不同种类终端机或绘图输出装置上。它是由Colin Kelley 和 Thomas Williams1986年开发的绘图程序发展而来的,可以在多个平台下使用。gnuplot既支持命令行交互模式,也支持脚本。

gnuplot 的主要作者包括:Thomas Williams, Colin Kelley, Russell Lang, Dave Kotz, John Campbell, Gershon Elber, Alexander Woo 和许多其他人。

gnuplot 与自由软件基金会和GNU 项目没有任何直接的关系,因此将 gnuplot 称为 GNUplot 是不对的。gnuplot 是完全独立的设计和开发的,命名为 gnuplot 只是种妥协,当时Thomas 希望他们开发的程序叫做 “llamaplot” Colin 更喜欢 “nplot” 这个名字。后来他们都同意命名他们的程序为 “newplot”,可是很快他们发现有个Pascal 语言写的程序叫这个名字,而且这个程序偶尔会被提到。最后 Thomas 想出了“gnuplot” 这个双方都可以接受的名字。 

gnuplot 在互联网上的主页地址是:www.gnuplot.info , 源代码和可执行程序也可以到http://sourceforge.net/projects/gnuplot 上下载。

gnuplot有详细的使用手册,如果用户使用的是GNU/Linux操作系统,可以察看 /usr/share/doc/gnuplot目录下的gnuplot.html文件。需要PDF版本的使用手册可以到http://sourceforge.net/projects/gnuplot 下载。

本文中所引用范例皆整理自 gnuplot demo。文中的图例亦引用自子目录 demo 中的范例。

快速入门

本文全文都以GNU/Linux 下的 gnuplot 4.0版本为例,如果读者使用的是其他版本的操作系统,个别操作细节请做相应调整。

在命令行模式下输入 gnuplot,即可看到如下的信息,其中省略号处省略了部分信息:

G N U P L O T
Version 4.0 patchlevel 0
last modified Thu Apr 15 14:44:22 CEST 2004
System: Linux 32 bit
……

Terminal type set to 'x11'
gnuplot>

‘gnuplot>’即是 gnuplot 的命令行提示符,gnuplot 的所有命令都在这个提示符下输入。

2D 绘图

请看例 1:

plot sin(x)

产生图 2结果 ——以曲线绘出三角函数 sin(x)。 

gnuplot 入门教程 1

图 1 Plotting sin(x)

假设我们只想看到一个正弦曲线周期。我们通过限制图的默认 范围来完成此操作。使用表示法 [min:max] 来指定范围。要仅指定最小值,使用 [min:];要仅指定最大值,使用 [:max]。数学上称此为所谓的区间表示法。

例 2从 -pi 到 +pi 的 sin(x) 和 cos(x)

set xrange [-pi:pi]
replot cos(x) with points pointtype 2

或者:

plot [-pi:pi] sin(x), cos(x) with points pointtype 2


gnuplot 入门教程 1

我们刚才使用了 replot 命令,它执行先前的 plot 命令。当您绘制曲线图且需要不断对该图进行修改以添加想要的特征时,此命令会非常有用。另外,replot 使您可以添加更多的图。尝试输入 replot cos(x)。依照语法,该命令等同于 plot sin(x), cos(x)replot 就是获取先前的绘图字符串,添加必要的逗号,然后附加输入给它的其余部分。

例 5 将数据文件中的数据画出:

plot sin(x), ‘1.dat’

其中1.dat 为一数据文件,每一行描述一点坐标位置。 内容如下,其中 后面的内容为注释: 

# $Id: 1.dat,v 1.1.1.1 1998/04/15 19:16:40 lhecking Exp $
-20.000000 -3.041676
-19.000000 -3.036427
-18.000000 -3.030596
-17.000000 -3.024081
-16.000000 -3.016755
-15.000000 -3.008456
……


gnuplot 入门教程 1

图 2 Plotting sin(x), data file – 1.dat

例 6命名图和坐标轴:

set title 'My first graph'
set xlabel 'Angle, in degrees'
set ylabel 'sin(angle)'
plot sin(x)


gnuplot 入门教程 1

现在,我们注意到 轴实际没有标记为度数,看起来不是很好。要修改此问题,可以通过调整 轴上的 tic 标记。

例 7 改变轴上 tic 并设置网格:

set title "My first graph"
set xrange [-pi:pi]  # we want only one cycle
set xtics ('0' 0, '90' pi/2, '-90' -pi/2, '45' pi/4,'-45' -pi/4,'135' 3*pi/4,'-135' -3*pi/4)
set grid
set xlabel 'Angle, in degrees'
set ylabel 'sin(angle)'
plot sin(x) 


gnuplot 入门教程 1

gnuplot 还允许您指定绘图的样式,以便获得进一步的控制。

例 8 多条曲线

plot sin(x) with linespoints pointtype 5, cos(x) w boxes lt 4

gnuplot 入门教程 1

with 子句使您可以详细而精确地指定线的样式。在本例中,我们说明两种有用的样式。第一种样式 linespoints 通常在对数据绘图时非常有用,它在涉及的每个示例或数据点处标记一个点,并使用线性插值法连接连续的点。这里我们另外指定点类型为 5,它选择终端允许的第五种点。第二种样式 boxes 更适合绘制直方图数据。注意我们如何在 cos(x) 曲线中将 with 缩写成 w。类似地,lt 是 linetype 的缩写,是另一个特定于终端的设置,它选择终端可以绘制的四种线。不必说,您可以使用 pt 代替冗长的 pointtype。如果想在多条线中使用相同的绘图样式(在一个 plot 命令中或在多个 plot 命令中),可以使用 set 命令设置绘图样式:set style function linespoints。要更改用于绘制与函数相对的数据集合的样式,使用 set style data linespoints

当绘制两条或多条曲线时,我们需要关键字或图例来对它们进行区分。默认情况下,关键字在右上角;但是如果它妨碍了图,可以将关键字放到其他位置 。如果愿意,甚至可以放到图外。

例 9 定制图的关键字或图例

set key top left
set key box
plot [-pi:pi] sin(x) title 'sinusoid' with linespoints pointtype 5, cos(x) t 'cosine' w boxes lt 4

gnuplot 入门教程 1

上面,我们在同一图中绘制了正弦和余弦曲线。gnuplot 使您还可以绘制多个图,这样它们可以并排显示在同一输出屏幕或文件中。在某些排版系统中,以一个文件的形式包含两个图形比分别包含两个图形要更容易。

例 10 Multiplot 示例:

set xrange [-pi:pi]
# gnuplot recommends setting the size and origin before going to multiplot mode
# This sets up bounding boxes and may be required on some terminals
set size 1,1
set origin 0,0

# Done interactively, this takes gnuplot into multiplot mode
set multiplot

# plot the first graph so that it takes a quarter of the screen
set size 0.5,0.5
set origin 0,0.5
plot sin(x)

# plot the second graph so that it takes a quarter of the screen
set size 0.5,0.5
set origin 0,0
plot 1/sin(x)

# plot the third graph so that it takes a quarter of the screen
set size 0.5,0.5
set origin 0.5,0.5
plot cos(x)

# plot the fourth graph so that it takes a quarter of the screen
set size 0.5,0.5
set origin 0.5,0
plot 1/cos(x)

# On some terminals, nothing gets plotted until this command is issued
unset multiplot
# remove all customization
reset


gnuplot 入门教程 1

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149437.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python中zipfile的使用_python调用winrar解压

    python中zipfile的使用_python调用winrar解压压缩f=zipfile.ZipFile(file,mode="r",compression=ZIP_STORED,allowZip64=False)创建一个zip文件对象,压缩是需要把mode改为‘w’,这个是源码中的注释OpentheZIPfilewithmoderead"r",write"w"orappend"a",a为追加压缩,不会清空原来的zipf…

    2022年9月17日
    1
  • 多周期流水线cpu_cpu多级流水线

    多周期流水线cpu_cpu多级流水线CPU流水和流水线科普文章,隶属程序猿的内功修为

    2022年8月20日
    5
  • mybatis插件运行原理_maven 插件

    mybatis插件运行原理_maven 插件最近在做新项目,基于若依(前后端分离版本)做的,他也使用了常用的分页插件PageHelper。老规矩,今天文章还是分三步走,先上文章导读,然后讲原理,最后讲解源码案例。最后达到的效果就是希望读者朋友们在看完我写的这篇文章后,能够秒懂别人写的MyBatis插件并且能够开发出自己的MyBatis的插件。文章导读MyBatis插件原理与实战什么是插件?插件就是在具体的执行流程插一脚(触发点、拦截器)来实现具体的功能。一般插件会对执行流程中的上下文有依赖,抽象的说,我们也可以把MyBatis看作是J

    2022年9月28日
    1
  • sdk e qq(E+)

    1.说明:教程属于官方E聊SDK-简介(1)进入官网进入管理台SDK版本:v1.01技术交流QQ群:4716889372.简介:E聊SDK是一套适用于PC端,移动端的即时通讯解决方案,源代码开放。E聊整合了即时通讯的基础能力,使用E聊,您可以让您的应用快速接入即时聊天的功能。E聊现已适配PCWeb,移动Web,Android,iOS等平台。3.系统架构:3.1各模块介绍E聊服务器:提供了基础的消息转发功能,用户管理、群组管理等功能;E聊管理台:向E聊服务器申请接入

    2022年4月18日
    65
  • linux iptable命令用法

    linux iptable命令用法iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。语法iptables(选项)(参数)选项-t<表>:指定要操纵的表;-A:向规则链中添加条目;-D:从规则链中删除条目;-i:向规则链中插入条目;-R:替换规则链中的条目;-L:显示规则链中已有的条目;-F:清楚规则链中已…

    2022年5月28日
    41
  • 数据挖掘应用实例(db2聚合函数)

    http://blog.csdn.net/pipisorry/article/details/48894977海量数据挖掘MiningMassiveDatasets(MMDs)-JureLeskovec courses学习笔记之associationrules关联规则与频繁项集挖掘{FrequentItemsets:Oftencalled”association

    2022年4月15日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号