在CentOS上编译安装gnuplot绘图工具

gnuplot是一个命令行的交互式绘图工具。用户通过输入命令,可以逐步设置或修改绘图环境,并以图形描述数据或函数,使我们可以借由图形做更进一步的分析。

gnuplot是由Colin Kelly和Thomas Williams于1986年开始开发的科学绘图工具,支持二维和三维图形。它的功能是把数据资料和数学函数转换为容易观察的平面或立体的图形,它有两种工作方式,交互式方式和批处理方式,它可以让使用者很容易地读入外部的数据结果,在屏幕上显示图形,并且可以选择和修改图形的画法,明显地表现出数据的特性。

本文将描述如何在CentOS系统上编译和安装gnuplot,并且还会提供一个简单的绘图示例。

一、环境描述

1. 虚拟机配置

  • CPU:单核 2.4GHz
  • 内存:DDR3 1333 2GB
  • 硬盘:120GB
  • IP地址:192.168.21.134
  • 操作系统:CentOS 6.6 x86_64 Desktop

2. 编译环境

  • GCC:4.4.7 20120313
  • YUM源:官方Base源 + EPEL源 + RepoForge源

3. gnuplot

  • 版本:gnuplot-5.0.5.tar.gz
  • 安装方式:编译安装(本文内容)

二、编译选项

在配置gnuplot的源码时,可以运行以下命令,查看编译和安装的选项:

  1. ./configure --help

常用的编译选项如下所述:

  • –prefix=PREFIX
    将gnuplot安装在PREFIX指定的目录中,本文使用/usr/local/gnuplot目录。

  • –with-linux-vga
    使用Linux的SVGA控制台驱动(需要安装svgalib-devel包)。

  • –with-texdir
    使用latex样式文件(需要安装texlivetexlive-latex包)。

  • –with-kpsexpand
    在运行时查找kpsexpand,它是一种文件查找工具。

  • –with-gihdir=DIR
    后缀为.gih的帮助文件的存储位置,本文使用/usr/local/gnuplot/share/gnuplot/5.0目录。

  • –with-readline=XXX
    这个选项有多种取值:
    builtin,使用内建的readline程序;gnu,使用GNU的readline程序库;bsd,使用NetBSD的editline程序库;DIR,使用指定位置的readline程序。本文将这个选项设置为gnu。

  • –with-gd
    使用gd程序库,它是一种图像工具库。

  • –with-cwdrc
    在当前目录中检查.gnuplot文件,但是会有一定的安全风险。

  • –with-bitmap-terminals
    使用点阵打印机(Dot Matrix Printer)和可移植位图(Portable Bit Map)。

  • –with-caca
    使用caca程序库,它能够将像素信息转换为彩色的ASCII代码。

  • –without-row-help
    按列格式化帮助和副标题表格。

  • –enable-backwards-compatibility
    兼容较老版本的语法。

  • –with-gpic
    使用gpic终端。

  • –with-mif
    使用mif终端(FrameMaker 3)。

  • –with-ggi
    启用ggi(General Graphics Interface,通用图形接口)驱动程序。

  • –with-tutorial
    在编译时拷贝LaTeX的教程文件。

  • –with-qt=XXX
    这个选项有多种取值:
    qt4,使用qt4终端;qt5,使用qt5终端;no,不使用QT终端。
    本文使用qt4终端。

  • LIBCERF_CFLAGS=XXX
    为C编译器指定LIBCERF的头文件。

  • LIBCERF_LIBS=XXX
    为链接器指定LIBCERF的库文件。

三、安装流程

1. 安装EPEL和Remi软件源

在Shell中运行以下命令,安装第三方软件源:

  1. rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
  2. rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

2. 安装开发工具

在Shell中运行以下命令,安装开发和编译环境:

  1. yum groupinstall -y "Development Tools"

3. 安装依赖包

在Shell中运行以下命令:

  1. yum install -y texlive texlive-latex readline-devel zlib-devel gd-devel lua-devel cairo-devel pango-devel wxGTK-devel qt-devel libcaca-devel svgalib-devel

4. 编译安装libcerf

libcerf是一个独立的数学程序库,它和Dawson、Faddeeva和Voigt函数一起实现了一种高效和精确的复杂误差函数(Complex Error Function,缩写为cerf)。在Shell中运行以下命令,编译安装libcerf:

  1. ## 下载源码包
  2. cd /root/Downloads
  3. wget http://120.52.72.22/jaist.dl.sourceforge.net/c3pr90ntc0td/project/libcerf/libcerf-1.3.tgz
  4. ## 解压缩源码包
  5. tar xvzf libcerf-1.3.tgz
  6. ## 编译安装
  7. cd libcerf-1.3
  8. ./configure
  9. make && make install
  10. ## 导出库文件配置
  11. echo "export LD_LIBRARY_PATH=/usr/local/lib" >> /etc/profile
  12. source /etc/profile

5. 编译安装latex2html

LaTeX2HTML是一种能够将LaTeX文档转换为HTML网页的工具。在Shell中运行以下命令,编译安装LaTeX2HTML:

  1. ## 下载源码包
  2. cd /root/Downloads
  3. wget http://mirror.unl.edu/ctan/support/latex2html/latex2html-2016.tar.gz
  4. ## 解压缩源码包
  5. tar xvzf latex2html-2016.tar.gz
  6. ## 编译安装
  7. cd latex2html-2016
  8. ./configure
  9. make && make install

6. 编译安装ggi

GGI(General Graphics Interface,通用图形接口)是一个开源项目,旨在开发一种能够在各种平台上运行的、可靠的、稳定的和快速的计算机图形系统。在Shell中运行以下命令,编译安装GGI:

  1. ## 下载ggi捆绑源码包
  2. cd /root/Downloads
  3. wget http://120.52.72.24/jaist.dl.sourceforge.net/c3pr90ntc0td/project/ggi/bundle/GGI-2.2.2/ggi-2.2.2-bundle.src.tar.gz
  4. ## 解压缩源码包
  5. tar xvzf ggi-2.2.2-bundle.src.tar.gz
  6. ## 编译安装libgii
  7. cd ggi-2.2.2-bundle/libgii-1.0.2
  8. ./configure
  9. make && make install
  10. ## 编译安装libggi
  11. cd ../libggi-2.2.2
  12. ./configure
  13. make && make install

7. 编译安装gnuplot

在Shell中运行以下命令,编译安装gnuplot:

  1. ## 下载源码包
  2. cd /root/Downloads
  3. wget http://120.52.72.24/nchc.dl.sourceforge.net/c3pr90ntc0td/project/gnuplot/gnuplot/5.0.5/gnuplot-5.0.5.tar.gz
  4. ## 解压源码包
  5. tar xvzf gnuplot-5.0.5.tar.gz
  6. ## 编译安装,所有编译选项的作用请参考上文
  7. cd gnuplot-5.0.5
  8. ./configure --prefix=/usr/local/gnuplot --with-linux-vga --with-texdir --with-kpsexpand --with-gihdir=/usr/local/gnuplot/share/gnuplot/5.0 --with-readline=gnu --with-gd --with-cwdrc --with-bitmap-terminals --with-caca --without-row-help --enable-backwards-compatibility --with-gpic --with-mif --with-ggi --with-tutorial --with-qt=qt4 LIBCERF_CFLAGS='-I/usr/local/include' LIBCERF_LIBS='-L/usr/local/lib -lcerf'
  9. make && make install
  10. ## 导出可执行文件配置
  11. echo "export PATH=$PATH:/usr/local/gnuplot/bin" >> /etc/profile
  12. source /etc/profile

8. 检查版本

在Shell中运行以下命令:

  1. gnuplot --version

若返回信息如下图所示,则表示gnuplot安装成功:

gnuplot版本号

至此,gnuplot已经编译安装完成,下面将通过一个小示例,简单说明gnuplot的使用方法。

四、绘图示例

本文会通过一个数据文件进行绘图,这是一个关于北京市一年中每月平均降水量的数据,我们的数据以纯文本方式储存在文件名为datafile.dat的文件中,存储在/root/Downloads目录中。文件全文如下所示:

  1. ### 文件开始 ###
  2. # 北京月平均降水量 (mm)
  3. #
  4. # 月份 降水量
  5. # ==============
  6. 1 2.5
  7. 2 5.1
  8. 3 10.2
  9. 4 25.4
  10. 5 27.9
  11. 6 71.1
  12. 7 175.3
  13. 8 182.9
  14. 9 48.3
  15. 10 17.8
  16. 11 5.1
  17. 12 2.5
  18. ### 文件结束 ###

数据分为两列,第一列为月份,第二列为降水量。以#符号开始的各行为注释,也就是说,这些行对绘图不构成任何影响。

在Shell中运行以下命令,进入gnuplot的命令行:

  1. cd /root/Downloads/
  2. gnuplot

下面开始画图,在gnuplot命令行中运行以下命令:

  1. set xlabel "月份"
  2. set ylabel "降水量(毫米)"
  3. set title "北京市月平均降水量"
  4. unset key
  5. set xrange [0.5:12.5]
  6. set xtics 1,1,12
  7. plot "datafile.dat" with linespoints linecolor 3 linewidth 2 pointtype 7 pointsize 2

上述每行代码的释义,如下所述:

  • 第1行:设置X轴的注释;
  • 第2行:设置Y轴的注释;
  • 第3行:设置绘图的标题;
  • 第4行:删除图例注释;
  • 第5行:设置X轴的取值范围(也就是定义域);
  • 第6行:设置X轴的最小主刻度、主刻度步长和最大主刻度;
  • 第7行:根据datafile.dat数据文件绘图,指定点和线的样式,包括线色、线宽、点的类型和点的大小。

最后,可以得到以下的图形:

gnuplot示例