PyGMT-HOWTO#

このWebサイトについて#

本Webサイトは,美麗な地図やグラフを作成できるツールGeneric Mapping Tools (GMT)のPython インターフェースであるPyGMTの地震学における利用を主な対象としたチュートリアルです.

GMTとPyGMT#

現在のPyGMTやGMTでどのような図が作成できるかを知るには,公式のギャラリーを見てみるのが良いでしょう.

もともと,GMTはUn*x用のコマンドラインツール群として開発されました.単独Postscriptという形式の画像データを生成する多数のコマンド群からなり,シェルスクリプト等によりそれらのコマンドを組み合わせる必要がありました.シェルスクリプトの特性上,どうしても可視化のコードが煩雑になりがちで,再利用性も低くなりがちでした.

PyGMTは,そんなGMTのPythonインターフェースです.Python上のデータから(原則としては中間ファイルやシェルスクリプトを介することなく)直接GMTによる可視化を行うことができます.さらにNumPypandasといったPython上の科学技術計算でよく使われるライブラリのデータ型と互換性があるため,研究成果の可視化ツールとしてとても使いやすいと思います.

Python上の可視化というと,通常のグラフではmatplotlibが,地図ではcartopyが広く使われていると思います.PyGMTとどちらを使うかは好みの問題だと思いますが,筆者の意見ではPyGMTのほうが美麗なグラフを生成しやすいと思います.また,GMTの地図投影やグリッドデータ(2次元等間隔のメッシュに対して値が割り当てられたデータ)を扱う機能の豊富さは,大変魅力的です.一方,処理はやや遅めのようです.特に地震学分野ではこれまでGMTが広く使われていたという経緯もあるため,これまでと同じようなやり方で可視化ができるという継続性に魅力を感じる人もいるかもしれません.

このページの目指すもの・目指さないもの#

本Webサイトでは,基本的な地図の作り方から震源分布や地震波形など,地震学における応用に目的を限定した作図を取り扱います.また,地震学解析で広く使われているライブラリであるObsPyとの連携も紹介します.可視化はJupyter Notebook上で行うことを前提としますが,紹介するスクリプトはほとんどそのままPythonスクリプトとして転用できるはずです.

また,2022年現在PyGMTはいまだ活発な開発下にあり,GMTのあらゆる機能がPythonで使えて,かつそれがドキュメント化されているとは言い切れない状態にあります.そこで,(ごく一部ではありますが)公式にはドキュメント化されてないものの,筆者が試行錯誤的に見つけた使い方のTipsなどもこの場で紹介します.

逆に,本Webサイトでは,PyGMTやGMTのあらゆる機能を網羅するような解説は行いません.説明の一部で従来型のGMTのスクリプトも現れますが,それらについての詳しい説明も行いません.必要に応じて本家のマニュアルや多数ある解説サイトをご覧ください.また,特にインストール時などでは,Un*xコマンドラインの利用については既知であることを前提として説明しています.

本WebサイトのコードはmacOS Monterey (Intel/M1 CPUs)とUbuntu 22.04 LTSのマシン上でMinicondaによって構築したJupyter Notebookにより動作確認しています.検証にもちいたPyGMTとGMTのバージョンはそれぞれ0.6.1と6.3です.

筆者について#

筆者は地震学研究者(大学教員)です.Pythonをはじめて触ったのはAI研究による流行が始まるより前の2007年ごろですが,それから10年以上のブランクを経て2021年頃から再びPythonを研究および業務に使い始めました.とはいえ,コンピュータ上の母国語はModern Fortranであり,Python巧者とはとても言えません.本ページを見て「もっと良い書き方がある」と思われたら,ぜひgithubのIssueやPull Requestでご教示ください.本ページ上部のGitHubのアイコンからもたどれます.

改版履歴#

日付

内容

2021-12-20

初版公開

2022-01-09

軽微な修正

2022-06-17

内容を複数ページに分割開始.前書きとインストール解説の詳細化

2022-06-17

地形断彩図の分割と説明の追加

2022-06-28

内容のさらなる分割,xyデータプロットの説明追加.

2023-06-07

PyGMT Version 0.9.0 に対応,画像保存についてのページ作成

2023-07-05

アニメーション動画の作成ページを作成