超详细的gnuplot使用教程

  • 1.gnuplot参数介绍及演示
    • 1.1首先来解释一下会用到的各类参数以及其解释
    • 1.2 画图实际测试
    • 1.3 其它参数介绍(约定范围、坐标轴设定)
      • 1.3.1 约束画图范围
      • 1.3.2 关于坐标轴的设定
      • 1.3.3 图例
      • 1.3.4 在图中任意位置插入文字
    • 1.4 同时画出多条曲线
    • 1.5 x轴时间设置
    • 1.6 在图中添加直线和箭头
    • 1.7 读取dat、txt文件进行画图
    • 1.8 设定图的大小和位置
    • 1.9 画多个图
  • 2.gnuplot进阶
    • 2.1 使两坐标轴的单位长度等长
    • 2.2 在同一张图里利用左右两边的y轴分别画图
    • 2.3画漂亮的pm3D图
    • 2.4 画等高线
    • 2.5 利用脚本文件避免重复输入
    • 2.6 gnuplot画GIF动图
  • 3.参考文章

1.gnuplot参数介绍及演示

1.1首先来解释一下会用到的各类参数以及其解释

命令 缩写 意义
With w with后边跟需要指定的样式
Line l 用线l显示
Point p 用点显示
LinePoints lp 用线和点画,对数据绘图时有用
LineType lt 线的样式(0代表虚线,1-7代表实线,颜色分别为紫、蓝、绿、橙、黄、靛、红。超过7以后颜色依次循环)
LineWidth lw 线的宽度(level从0开始,默认为1)
PointType pt 点的样式(level从0开始,默认为1)
PointSize ps 点的宽度(level从0开始,默认为1)

1.2 画图实际测试

为了显示出不同的差别,此处我谨以sinx函数或者cos函数来进行显示:

 plot sin(x)//当没有设置其格式时,调用默认的设置

plot sin(x) w p
//表示使用点画

plot sin(x) w l
//表示使用线画

plot sin(x) w lp
//表示使用点和线画

plot sin(x) w lp lt 0
//表示使用点和线画,线的种类为0

plot sin(x) w l lt 1
//表示使用线画,线的种类为1

plot sin(x) w l lt 7
//表示使用线画,线的种类为7

plot sin(x) w l lt 1 lw 4
//表示使用线画,线的种类为1,线的宽度为4

plot sin(x) w p pt 4
//表示使用点画,点的种类为4

plot sin(x) w p pt 4 ps 2
//表示使用点画。点的种类为4,点的大小为2

1.3 其它参数介绍(约定范围、坐标轴设定)

1.3.1 约束画图范围

plot [-5:5] [-1.2:1.2] sin(x)
//表示x取值范围为[-5,5],y的取值范围为[-1.2,1.2]

1.3.2 关于坐标轴的设定

在对于坐标轴的设定,要注意的一点就是,在画图之前执行命令。

命令 含义
set xlabel ‘x’ x轴标为‘x’
set ylabel ‘y’ y轴标为’y’
set ylabel ‘DOS’ tc lt 3 ‘DOS’的颜色用第三种颜色
set xtics 1.0 x轴的主刻度的宽度为1.0,同样可以为y轴定义ytics
set mxtics 3 x轴上每个主刻度中画3个分刻度,同样可以为y轴定义mytics
set border 3 设为第三种边界,同样可以为上边的x轴(称为x2)和右边y(称为y2)轴进行设置,即x2tics,mx2tics,y2tics,my2tics。
set xtics nomirror 去掉上边x的刻度,同样可以为ytics设置
unset x2tics 去掉上边x的标度,同样可以为y2tics设置

下面我们就来验证一下上边的图吧。

gnuplot> set title 'kmust team'
gnuplot> set xlabel 'x'
gnuplot> set ylabel 'y'
gnuplot> set xtics 1.0
gnuplot> set mxtics 3
gnuplot> set border 3
gnuplot> plot sin(x)
gnuplot>

1.3.3 图例

命令 含义
set key left 放在左边,有left 和right两个选项
set key bottom 放在下边,只有这一个选项;默认在上边
set key outside 放在外边,但只能在右面的外边
set key left bottom 表示放在左下边

代码示例:

set key right bottom
gnuplot> set title "kmust"
gnuplot> plot sin(x)
//将图例放在右下角
//设置标题为“kmust”

1.3.4 在图中任意位置插入文字

gnuplot> set label 'I Love Kmust!' at 2.5,0.5
gnuplot> plot sin(x)
//在坐标(2.5,0.5)处插入文字
//如果想要删除文字就使用 unset label 1(此处数字代表要删除label的序号)

1.4 同时画出多条曲线

plot sin(x),cos(x)
//注意连个函数之间要使用逗号分隔开


当然两个函数之间也可以单独约束

plot sin(x) title 'sin(x)' w l lt 0 lw 2, cos(x) title 'cos(x)' w l lt 2 lw 2
//注意连个函数之间要使用逗号分隔开,每个函数的绘画要求紧跟着对应的函数

1.5 x轴时间设置

命令 含义
set xdata time X轴设置为时间格式
set timefmt “%Y-%m-%d” 文件中时间格式
set format x “%m/%d” 目标时间格式~
gnuplot> set xdata time
gnuplot> set timefmt "%Y-%m-%d"
gnuplot> plot sin(x)
//设置x轴为时间格式,并且其显示形式为年-月-日

1.6 在图中添加直线和箭头

gnuplot> set arrow from 0.0,0.0 to 2.0,0.0
gnuplot> plot sin(x)
//在图的中心点(0,0)向(2,0)画一条射线

gnuplot> set arrow from 0.0,0.0 to 0.0,-0.4 nohead
gnuplot> plot sin(x)
//只画一条直线的话,在画箭头的语句上方添加nohead标签
//从中心点(0,0)到(0,-0.4)画一条直线


除此之外我们还可以进行颜色调制

gnuplot> set arrow from 0.0,0.0 to -2.0,0.4 lt 2 lw 2
gnuplot> plot sin(x)
//从中心点(0,0)到(-2.0,0.4)画一条绿色射线,线条粗细等级为2


如果我们不小心画错了一个图形,我们又该如何删除呢,很简单,一句话就搞定了。

gnuplot> unset arrow 3
gnuplot> unset arrow 2
gnuplot> unset arrow 1
gnuplot> plot sin(x)
//如果我们发现第几个值线画错了,就可以使用语句unset删除对应的直线即可

1.7 读取dat、txt文件进行画图

在用c语言进行程序设计的时候,有时就需要画图任务,这时gnuplot可以读取dat、txt文件内的内容,并再进行绘画。

gnuplot> set arrow from -16.0,0.0 to 16.0,0.0 nohead
gnuplot> set arrow from -0.3,0.0 to 1.0,0.0
gnuplot> plot [-16:16] [-0.3:1] "sinc.bat"  u 1:2 w l lt 1 lw 1
//从(-16,0)到(16,0)画一条直线
//从(-0.3,0)到(1.0,0)画一条带箭头射线
//读取“sinc.bat”文件内的数据,并用其内的第一列和第二列作图,,并且设置线条颜色和粗细。

1.8 设定图的大小和位置

gnuplot> set size 0.5,0.5
gnuplot> plot sin(x)
//长宽均为默认宽度的一半,建议用这个取值,尤其是画成ps或eps图形的时候

gnuplot> set origin 0.0,0.5
gnuplot> plot sin(x)
//设定图的最左下角的那一点在图形面板中的位置。这里图将出现在左上角。

1.9 画多个图

gnuplot> set multiplot
//设置为多图模式
multiplot> set origin 0.0,0.5
//设置第一个图的原点的位置
multiplot> set size 0.5,0.5
//设置第一个图的大小,长和宽均为整个图的一半
multiplot> plot tan(x)
//开始绘制第一个图
multiplot> set origin 0.5,0.5
//设置第2个图的原点的位置
multiplot> set size 0.5,0.5
//设置第2个图的大小,长和宽均为整个图的一半
multiplot> plot  cos(x)
//开始绘制第2个图
multiplot> set origin 0.0,0.0
//设置第3个图的原点的位置
multiplot> set size 0.5,0.5
//设置第3个图的大小,长和宽均为整个图的一半
multiplot> plot  sin(x)
//开始绘制第3个图
multiplot> set origin 0.5,0.0
//设置第4个图的原点的位置
multiplot> set size 0.5,0.5
//设置第4个图的大小,长和宽均为整个图的一半
multiplot> plot 1/x
//开始绘制第4个图

绘制完成之后就会出现这个四合一的图,当然我们还可以 为每个图设置自己的特有属性,比如颜色、标题等。

2.gnuplot进阶

2.1 使两坐标轴的单位长度等长

gnuplot>  set size square
//设置形状为方形
gnuplot> set size 0.5,0.5
//设置图形的大小各为一半
gnuplot> set xrange[-10:10]
gnuplot> set yrange[-10:10]
//设置x,y的范围相同
gnuplot> plot x+2

2.2 在同一张图里利用左右两边的y轴分别画图

gnuplot> set xtics nomirror
//去掉上边坐标轴x2的刻度
gnuplot> set ytics nomirror
//去掉上边坐标轴y2的刻度
gnuplot> set x2tics
//让上面坐标轴x2刻度自动产生
gnuplot> set y2tics
//让上面坐标轴y2刻度自动产生
gnuplot> plot sin(x),cos(x) axes x1y2
//用x1y2坐标,axes x1y2表示用x1y2坐标轴

gnuplot> plot sin(x),cos(x) axes x2y2
//用x2y2坐标,axes x2y2表示用x2y2坐标轴
gnuplot> set x2range[-20:20]
//设定x2坐标的范围
gnuplot> report

gnuplot> set xrange[-5:5]
//设定x的范围
gnuplot> replot

gnuplot> set xlabel 'x'
gnuplot> set x2label 't'
gnuplot> set ylabel 'y'
gnuplot> set y2label 's'
//为图形的上下左右分别起标
gnuplot> replot

gnuplot> set title 'The figure'
//设置标题
gnuplot> replot

2.3画漂亮的pm3D图

gnuplot> set pm3d
//设置pm3d模式
gnuplot> set isosamples 50,50
//设置网格点为50x50
gnuplot> splot x**2+y**2
//画三维图像

2.4 画等高线

gnuplot> set dgrid3d 100,100
//设置三维表面的网格书目
gnuplot> set contour
//设置画等高线
gnuplot> splot x**2+y**2
//画图像

2.5 利用脚本文件避免重复输入

我在文件夹下创建了一个 try.plt文件,其内容如下所示

reset
//重置画图属性
set pm3d
//设置为pm3d模式
unset ztics
//取消z轴标题
set isosamples 200,200
//设置网格属性为200x200
splot x**2+y**2 w pm3d
//开始画图并且设置为pm3d模式

然后只需在gnuplot命令界面输入

load 'try.plt'
//加载plt文件,执行画图任务

其结果如下所示:

2.6 gnuplot画GIF动图

set term gif animate
//设置可以画动画
set output "e1.gif"
//设置输出的文件路径
set xrange [0:4*pi]
set yrange [-1:1]
//设置x,y范围
do for [i=0:40]{plot sin(x+i*pi/40) lw 1.5 title sprintf("t=%i",i)
}
//循环输出图像
set output

3.参考文章

gnuplot使用: https://www.cnblogs.com/waterystone/p/5085801.html
gnuplot生成gif动图:https://blog.csdn.net/weixin_34187862/article/details/85648365
gnuplot三维绘图;https://blog.csdn.net/ouening/article/details/72141345

超详细的gnuplot使用教程【2】相关推荐

  1. 超详细的 Wireshark 使用教程

    原文 超详细的 Wireshark 使用教程 一.wireshark是什么? wireshark是非常流行的网络封包分析软件,简称小鲨鱼,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息. ...

  2. 【02】2022.11最新超详细Vuforia图片识别教程

    [02]2022.11最新超详细Vuforia图片识别教程 文章目录 [02]2022.11最新超详细Vuforia图片识别教程 1.Vuforia环境搭建 2.License Key获取及注册 3. ...

  3. Anaconda超详细下载安装配置教程(Windows)

    Anaconda最新超详细下载安装配置教程(Windows) 命令总结写在最前面 1.查看conda版本: conda --version 2.进入python交互模式: python 3.退出pyt ...

  4. 【排序】什么都能排的C语言qsort排序详解【超详细的宝藏级别教程】深度理解qsort排序

    [排序]什么都能排的C语言qsort排序详解[超详细的宝藏级别教程]深度理解qsort排序 作者: @小小Programmer 这是我的主页:@小小Programmer 在食用这篇博客之前,博主在这里 ...

  5. 超详细的MySQL入门教程(四)

    MySQL:简单的增删改查 查询数据 基本语法介绍 打印任意值 查询表中全部数据 查询表中部分字段 限定条件查询 例1:查询编号值小于指定值的记录 例2:查询地址不等于某值的记录 例3:查询一级地址等 ...

  6. 【数据的存储】浮点数在内存中的存储详解【超详细的保姆级别教程,让面试官心服口服】手撕浮点数存储使用方式

    [数据的存储]浮点数在内存中的存储详解[超详细的保姆级别教程,让面试官对你心服口服]手撕浮点数存储使用方式 作者: @小小Programmer 这是我的主页:@小小Programmer 在食用这篇博客 ...

  7. 华为C8500S 超详细线刷刷机教程

    华为C8500S 超详细线刷刷机教程,菜鸟也可以刷机 手机, 华为C8500S, 教程 华为C8500S详细线刷刷机教程,开始: 鉴于很多网友是新手,都在询问刷机过程,怎样刷机,下面我就做个详细教程, ...

  8. DBeaver安装与使用教程(超详细安装与使用教程)

    文章预览: DBeaver安装与使用教程(超详细安装与使用教程) 一.DBeaver安装教程 ①下载地址 ②图文安装教程 二.DBeaver使用教程 ①mysql数据库为例 1>填写数据库信息 ...

  9. 超详细的cmake入门教程【转载】

    这篇文章主要介绍了超详细的cmake入门教程,需要的朋友可以参考下 源出处 超详细的cmake入门教程 什么是cmake 在 linux 平台下使用 CMake 生成 Makefile 并编译的流程 ...

最新文章

  1. 主键SQL教程–如何在数据库中定义主键
  2. Anchor的泛化:统一物体检测、实例分割、姿态估计的Point-set Anchor
  3. supervisor 重启_Golang HTTP服务平滑重启及升级
  4. vscode如何彻底卸载
  5. 基于FPGA异构计算快速构建高性能图像处理解决方案
  6. 错误删除linux分区致Win7引导失败的修复方法
  7. linux下恢复误删文件
  8. python的继承用法_python中继承有什么用法?python继承的用法详解
  9. Android按钮点击控制进度条,Android通过按钮和进度条实现音量调节(AudioManager)...
  10. QCC3007--打印库文件 log
  11. 华为防火墙重启_华为USG6000系列防火墙的Console密码重置过程
  12. 个人网站可以申请微信授权登录吗?
  13. linux虚拟主机用织梦,织梦程序用什么虚拟主机好
  14. Zalando在疫情中成为赢家,甚至超越了亚马逊
  15. 在苹果Mac电脑中如何将键盘当作鼠标使用?
  16. spring2.5.6升级到4.3.7常见问题
  17. Eclipse 常用快捷键整理
  18. 【游戏逆向】FPS游戏自瞄透视之堆栈分析
  19. 机巧围棋(CleverGo)项目总览及介绍
  20. 2022-2028全球与中国脚手架市场现状及未来发展趋势

热门文章

  1. Mac OSX 安装qemu
  2. java cloassLoader大仙儿
  3. 面向对象与面向过程的区别与联系
  4. AWS云上部署Hadoop
  5. YOLOX源码解析--全网最详细,建议收藏!
  6. oracle中删除表的四种基本操作 2021-11-03
  7. php 干扰曲线,曲线干扰控制
  8. 移动机器人传感器——GNSS
  9. scp使用 及 安装
  10. 微信小程序项目实例小程序记事本+后台