gnuplot是由Colin Kelly和Thomas Williams于1986年开发的命令行交互式绘图工具,支持二维和三维图形可视化,可在Linux、Windows、macOS等平台运行。该工具通过读取外部数据或数学函数生成图形,提供交互式操作与批处理两种模式。 其名称中的“gnu”与自由软件基金会无关,只是一个巧合,gnuplot有自己的版权声明。
gnuplot支持输出PostScript、PDF、PNG等多种格式文件,并可直接嵌入LaTeX文档。其输出终端设置包含交互式屏幕显示(如Qt、wxWidgets、X11)和文件输出模式,通过设置terminal参数实现格式切换。工具内置三维曲面图、等值线图绘制功能,支持参数方程可视化及多图线叠加绘制。作为第三方应用(如Octave)的绘图引擎,gnuplot提供用户手册、演示库及多语言文档资源。当前gnuplot的主要版本为6.0,最后更新于2025年9月。
gnuplot是一个命令行驱动的交互式函数绘图工具,用于linux、OSX、MSWin、VMS和许多其他平台。软件受版权保护但自由分发。gnuplot最初是为了让科学家和学生可视化数学函数和数据而编写的。
名称中的“gnu”与自由软件基金会无关,只是一个巧合。gnuplot不是由GPL覆盖,而是有自己的版权声明。
gnuplot支持2D曲线和3D曲面绘图。曲面可以绘制为网格图、3D坐标空间中的浮动图或等高线图。对于2D图,有许多绘图样式,包括线条、点、箱形图、热图、堆叠直方图和3D数据的等高线投影。支持输出到许多类型的终端、打印机和文件格式。
gnuplot的接口包括命令行编辑和历史记录,支持交互式输入或脚本驱动。图形可以添加任意标签、箭头、轴标签、标题、日期和时间、键。
gnuplot的主要贡献者包括Thomas Williams、Alex Woo、David Denholm、Lars Hecking、Ethan Merritt等。帮助和错误报告应访问项目网站。
gnuplot于1986年由Colin Kelly和Thomas Williams开发,最初是为了让科学家和学生可视化数学函数和数据而编写的。其名称中的“gnu”与自由软件基金会无关,只是一个巧合。该软件受版权保护但自由分发,主要贡献者包括Thomas Williams、Alex Woo、David Denholm、Lars Hecking、Ethan Merritt等人。截至2025年9月,gnuplot当前的主要稳定版本为6.0。
2025年9月,gnuplot发布了主要版本6.0。
根据项目官方页面(截至2026年2月),gnuplot当前的核心维护团队包括:broeker, cgaylord, lhecking, sfeam。
此外,项目历史上的主要贡献者还包括Thomas Williams、Alex Woo、David Denholm、Lars Hecking、Ethan Merritt等。
gnuplot采用C语言编写,支持输出到许多类型的终端、打印机和文件格式。
它处理2D曲线和3D曲面,曲面可以绘制为网格图、3D坐标空间中的浮动图或等高线图。
对于2D图,有许多绘图样式,包括线条、点、箱形图、热图、堆叠直方图和3D数据的等高线投影。
Linux环境下的安装
终端输入命令 $ sudo apt-get install gnuplot 系统自动获取包信息、处理依赖关系,完成安装
安装完毕后,在终端运行命令 $ gnuplot 进入gnuplot
系统出现:gnuplot>是提示符,所有gnuplot命令在此输入
Windows环境下的安装
到sourceforge搜索gnuplot,然后下载win32的zip压缩包,里面包含全部需要的文件,下载,释放到本地硬盘的目录里,假设是c:gnuplot。然后到这个目录的下查找bin这个目录,在bin目录下有一个名为wgnuplot.exe的文件,双击该文件,就出现了GUI界面的gnuplot
至此,你已经成功安装了gnuplot.
在提示符下面输入:
gnuplot> plot [-3.14:3.14] sin(x)
然后就可以看到结果.
上面有横轴有纵轴,还有图例.
如果你不需要上面的图例,你可以在运行:
gnuplot> unset key
如果要还原
gnuplot> set key default
然后再运行上面的绘图命令就可以实现没有图例或者恢复图例的效果了
一般情况下使用gnuplot都是科学绘图,因此很多都是放在文章里面。一般优秀的科技文献都是用latex来编写的,所以gnuplot提供了直接输出 tex文件的功能,只需要把output设置为latex就可以了。下面来看一个例子,就把上面的正弦曲线插入到你的文章中。在命令行下输入:
gnuplot> set terminal latex
set output "sin.tex"
plot [-3.14:3.14] sin(x)
那么程序自动生成了一个tex文件,其包含一系列代码,都是绘图用的,可以用写字板打开,里面都是一些指令,你完全可以忽略掉。你可以把这个文件直接插入你的文章中,例如
egin{figure}
egin{center}
input{sin.tex}
end{center}
end{figure}
以后凡是要生成插入latex的图片,就可以用上面的办法实现。
当然前面的图已经很不错了,就是稍显单调,这里给它加点装饰,来个x轴和y轴的提示、图片是说明。这样才更像一幅论文里面的图片。在命令行下输入以下代码:
gnuplot> set terminal latex
set output "sinagain.tex"
set size 5/5.,4/3.
set format xy "$%g$"
set title "This is a plot of $y=sin(x)$"
set xlabel "This is the $x$ axis"
set ylabel "This is he$y$ axis"
plot [0:6.28] [0:1] sin(x)
依旧,生成一个tex文件,安装前面讲的方法把它包含进来。然后编译成PDF的效果
这里用到了几个命令:
set size 设置图片的大小
set format xy 设置x、y轴文字的格式
set title 设置图片标题
set xlabel 设置x轴的文字
一般情况下,科技论文的图片很多都含有好几个图线,那么这里就介绍下如何在一张图里显示多张图片。
先看代码:
gnuplot> set terminal latex
set output "combine.tex"
set format xy "$%g$"
set title "Combination"
set xlabel "$x$ axis"
set ylabel "$y$ axis"
plot [-3.14:3.14] 0.2*x with points, sin(x) with lines
这里没有很特别的地方,只是plot多了一个项目,当要绘制多个图线的时候需要用逗号来分隔,注意这里不是中文的逗号,而是西文的逗号。另外with后面的参数是说用什么线性来绘制。出来的效果看下面的图:
接下来再对图片进行加工。一般图片x轴每个计数单位都是希望能够控制的,而不是系统自己来决定的,那么可以通过以下的代码来实现。
看代码:
gnuplot> set terminal latex
set output "tic.tex"
set format y "$%g$"
set format x "$%.2f$"
set title "This is $sin(x)$"
set xlabel "This is the $x$ axis"
set ylabel "$sin(x)$"
set xtics -pi, pi/4
plot [-pi:pi] sin(x)
把生成的tex文件插入你的latex文件中,就出现了以下的效果:
还是没有大变化,就加了一个set xtics这个是设置x的间距,也就是从-pi开始、每隔pi/4出现一次,pi是gnuplot内建的一个变量,所以只要输入pi,系统知道其含义。
mac环境下的安装
先安装brew(一款mac下包管理工具,类似apt),已经安装跳过。
终端输入brew install gnuplot,系统会自动的下载依赖的包并完成安装。