使用 Python 创建阴影浮雕图

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用 Python Matplotlib 创建阴影浮雕图。阴影浮雕图对于可视化地形数据很有用,因为它们使用阴影来表示海拔变化。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。

导入库

我们将首先导入必要的库。

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import cbook
from matplotlib.colors import LightSource

加载数据

接下来,我们将加载本教程中要使用的示例数据。我们将使用 jacksboro_fault_dem.npz 文件,其中包含海拔数据。

dem = cbook.get_sample_data('jacksboro_fault_dem.npz')
elev = dem['elevation']

创建阴影浮雕图

现在我们将使用 LightSource 类创建阴影浮雕图。我们将创建两个子图,一个是带有颜色映射数据的,另一个是带有光照强度的。

## 从西北方向照亮场景
ls = LightSource(azdeg=315, altdeg=45)

fig, axs = plt.subplots(ncols=2, nrows=2)
for ax in axs.flat:
    ax.set(xticks=[], yticks=[])

axs[0, 0].imshow(z, cmap=cmap)
axs[0, 0].set(xlabel='颜色映射数据')

axs[0, 1].imshow(ls.hillshade(z, vert_exag=ve), cmap='gray')
axs[0, 1].set(xlabel='光照强度')

我们将再创建两个子图,一个将 blend_mode 设置为 “hsv”,另一个设置为 “overlay”。

rgb = ls.shade(z, cmap=cmap, vert_exag=ve, blend_mode='hsv')
axs[1, 0].imshow(rgb)
axs[1, 0].set(xlabel='混合模式: "hsv"(默认)')

rgb = ls.shade(z, cmap=cmap, vert_exag=ve, blend_mode='overlay')
axs[1, 1].imshow(rgb)
axs[1, 1].set(xlabel='混合模式: "overlay"')

显示图表

最后,我们将使用 plt.show() 来显示图表。

plt.show()

总结

在本实验中,我们学习了如何使用Python的Matplotlib创建阴影浮雕图。我们加载了示例数据,并使用 LightSource 类创建了四个采用不同阴影技术的子图。然后,我们使用 plt.show() 显示了这些图表。