0%

PyGMT安装配置

PyGMT作为实现GMT绘图的Python包,是地球科学中广泛应用的命令行程序。它提供了处理空间数据(网格化、过滤、遮蔽、FFT 等)和绘制高质量平面图和地图的功能。本文介绍PyGMT在Linux或macOS下的配置与安装。

PyGMT与Bokeh、Matplotlib等常规的Python库不同,后者更加注重交互性,并允许使用不同的后端。GMT则使用PostScript(.ps)格式为出版物、海报等生成高质量(静态)矢量图形,它的存储效率很高,而且速度非常快。用户可以将.ps图形转换为其他格式,例如PDF,PNG和JPG等多种格式,以在Web上和其他地方使用。实际上,PyGMT用户通常不会与原始PostScript文件建立任何联系,而只会获得更方便的格式,例如PDF和PNG等。

Python版本要求

目前PyGMT要求3.6或者更高版本Python。

官方建议使用Anaconda的Python发行版,anaconda的优点在于能够保证conda包管理器的可用性,同时确保系统可以满足PyGMT的所有依赖关系。anaconda不要求计算机的管理员权限,同时也不会影响系统中任何已经安装的python版本。

GMT版本要求

PyGMT要求GMT的版本至少为6.0,GMT6.0是最新的发布版本,可以在这里找到。

随着PyGMT的不断开发,GMT本身也做出了很多相应的改变(主要是新出现的现代模式),因此PyGMT要求GMT版本至少为6.0或以上。

用户通过conda-forge获取为Linux、Mac和Windows编译的GMT的conda软件包,高级用户也可以从源码构建GMT

依赖

PyGMT要求安装以下库:

以下是可选(但建议)依赖项:

  • IPython 用于Jupyter notebooks中图形的显示.

安装GMT及其他依赖项

在安装PyGMT之前,必须要安装GMT本身以及其他依赖项。最简单的方法就是使用conda包管理器,建议在隔离的conda虚拟环境中进行,以免其依赖项与其他python的依赖项版本互相干扰或矛盾。

  1. 配置conda,以实现从conda-forge channel获取软件包:

    1
    conda config --prepend channels conda-forge
  2. 创建一个新的conda虚拟环境,并安装Python和所有依赖项,假定新的conda环境命名为“pygmt”:

    1
    conda create --name pygmt python=3.6 pip numpy pandas xarray packaging gmt=6.0.0
  3. 运行以下代码,激活新建的conda环境:

    1
    conda activate pygmt

    如遇到conda虚拟环境管理的问题,请自行百度

至此,所有命令都会在新建的conda环境中运行,不会影响到python的默认安装。

⚠️ 注意:
目前只在Linux和macOS上进行了测试,而未在Windows上运行测试,因此在windows下安装配置可能会出错。你也可以在Github上创建问题反馈错误。

安装PyGMT

整了这么久,终于到了安装主角(PyGMT)的环节。

到这一步,我们已经安装好了GMT,并激活了的conda环境,接下来就可以使用pip从Github安装最新的PyGMT源文件:

1
pip install https://github.com/GenericMappingTools/pygmt/archive/master.zip

或者,也可以用git将PyGMT的仓库克隆到本地,然后使用pip进行安装:

1
2
3
git clone https://github.com/GenericMappingTools/pygmt.git
cd pygmt
pip install .

这将允许您使用pygmt中的Python库。

测试安装

PyGMT配备完整的测试套件,可以在安装后运行测试,不过还需要一些额外的依赖项(当然,运行前请务必激活你的的 conda env):

1
2
import pygmt
pygmt.test()

测试大概需要几十秒时间(慢的话可能几分钟),完成后可能会提示有部分软件包测试失败,虽然官方手册里没有说怎么办,但是我想这些失败或者缺失的包应该自己动手安装吧。

查找 GMT 共享库

如果安装了多个版本的GMT,则可能致使PyGMT将找不到正确版本的GMT共享库。

可以通过设置环境变量GMT_LIBRARY_PATH来告诉PyGMT去哪里能够准确地找到libgmt,因此这个变量值应该设置为Linux、MacOS以及Windows分别对应的libgmt.solibgmt.dylib或者gmt.dll等文件的路径。在终端运行:

1
export GMT_LIBRARY_PATH=$HOME/anaconda3/envs/pygmt/lib

安装完成!


第一个官方例子

在Jupyter notebook下运行一下命令进行绘图,但记得加上%matplotlib inline命令来显示图像。

1
2
3
4
5
6
7
8
9
10
import pygmt

# 创建一个绘图实例
fig = pygmt.Figure()
# 绘制basemap
fig.basemap(region=[-90, -70, 0, 20], projection="M8i", frame=True)
# 绘制海岸线
fig.coast(shorelines=True)
# 显示图形
fig.show()

运行结果:

test1

在PyGMT绘图命令中,各个选项的参数可以通过数值或字符串及其列表来提供,例如上面代码中:

  • frame相当于gmt中的-B标准选项,在PyGMT中其参数可以通过一个省略-B的字符串列表来提供;
  • region相当于-R,其横纵坐标上下限,为一个整形数值列表;
  • projection投影方式为字符串"M8i"

是不是很简单。

并且在GMT6中大部分绘图模块已经删除了ps前缀,其新的模块名称在一定程度上与PyGMT绘图模块名保持了一致,因此如果你对GMT6足够熟悉,只需要知道你要用的模块名便可以在 Jupyter notebook 中通过运行fig.模块名?来查看相应模块的帮助文档。

Python绘制地图的能力飙升!👍👍👍

对于一个gmt重度用户来说,python地学数据可视化的学习成本骤降,从此,妈妈再也不用担心我不会用python画地图了!😎😎😎

运行下面代码,来保存图片为png格式,当然也支持其他位图及矢量图格式。

1
fig.savefig("test1.png")

参考资料:

PyGMT官方文档