Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

✍️ 田冬冬、姚家园📅 2022-07-31⏱️ 15 分钟


在获取地震目录之后,通常还需要对地震目录做一些简单的绘图和分析。这一节演示如何 绘制最简单的地震深度直方图、地震震级直方图以及震级-频次关系图。

首先,需要把地震目录准备好。这里我们选择下载 2000–2010 年间震级大于 4.8 级, 震源深度大于 50 km 的地震。这一地震目录中共计约 7000 个地震:

6982 Event(s) in Catalog:
2009-12-31T17:42:15.960000Z | -19.747, -177.753 | 5.4  mwc | manual
2009-12-31T09:06:01.250000Z |  -7.499, +127.930 | 5.1  mb | manual
...
2000-01-02T12:14:39.090000Z | -17.943, -178.476 | 5.5  mwc | manual
2000-01-01T05:24:35.290000Z | +36.874,  +69.947 | 5.1  mwc | manual
To see all events call 'print(CatalogObject.__str__(print_all=True))'

为了进一步对数据做处理以及绘图,我们还需要导入 NumPy 和 Matplotlib 模块:

地震深度分布直方图

为了绘制地震深度直方图,我们先从地震目录中提取出地震深度信息,并保存到数组 depth 中。 需要注意的是,ObsPy 的地震目录中地震深度的单位为 m,所以需要除以 1000.0 将深度单位 转换为 km。

我们可以使用 Matplotlib 的 ~matplotlib.axes.Axes.hist() 函数绘制直方图: 这里我们设置的直方的最小值为 50,最大值 700,间隔为 10,同时设置了 Y 轴以对数方式显示。 从图中可以明显看到地震深度随着深度的变化:

<Figure size 640x480 with 1 Axes>

地震震级直方图

同理,从地震目录中提取出地震震级信息,保存到数组 mag 中并绘图。从图中可以明显看到, 震级越小地震数目越多:

<Figure size 640x480 with 1 Axes>

地震震级-频度关系

地震震级-频度关系应符合 Gutenberg–Richter 定律。为了绘制地震震级-频度关系, 首先需要计算得到 GR 定律里的 NN,即大于等于某个特定震级 MM 的地震数目。 这里,我们选择 MM 的取值范围为 4.0 到 8.0,间隔为 0.1。计算 NN 的方法有很多,下面的 方法使用了 Python 的列表表达式以及 numpy.sum() 函数来实现:

绘图脚本如下,注意图中 Y 轴是对数坐标。从图中可以明显看到 log⁡10N\log_{10}N 与 MM 在 4.8 - 7.6 级 之间存在线性关系。由于我们使用的地震目录里只有 4.8 级以上的地震,所以在 4.7 级以下偏离了线性关系,而大地震由于数目太少也偏离了线性关系。

<Figure size 640x480 with 1 Axes>

更进一步,我们可以对 4.8-7.6 级之间的数据进行线性拟合,得到 GR 定律中的系数 aa 和 bb。 这里我们采用 numpy.logical_and 函数找到数组 mw 中所有满足条件的元素的索引, 并使用 NumPy 的布尔索引功能筛选出满足条件的震级 mw[idx] 和对应的 counts[idx],再 使用 numpy.polyfit 函数拟合一元一次多项式,最后绘图:

<Figure size 640x480 with 1 Axes>