经纬度绘图_Python气象绘图教程(七)——Cartopy
时间: 2023-08-03 11:06:06 浏览: 205
cartopy:Cartopy-具有matplotlib支持的制图python库
Cartopy 是一个专门用于地图绘制的 Python 包,支持多种地图投影方式,包括等距平面投影、矢量和栅格数据的投影转换、地图要素绘制等功能。本文将简单介绍 Cartopy 的基本用法,以绘制经纬度数据为例。
首先安装 Cartopy:
```
pip install cartopy
```
然后导入需要的模块:
```python
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
```
其中,`ccrs` 模块定义了各种地图投影方式,`cfeature` 模块提供了一些常用的地图要素,如海岸线、国家边界等。
接下来,我们可以使用 `ccrs.PlateCarree()` 定义经纬度投影方式,然后使用 `plt.subplots()` 创建一个画布和子图,再在子图上使用 `add_feature()` 方法添加地图要素:
```python
fig, ax = plt.subplots(subplot_kw=dict(projection=ccrs.PlateCarree()))
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.BORDERS)
ax.add_feature(cfeature.LAKES, alpha=0.5)
ax.add_feature(cfeature.RIVERS)
ax.set_extent([70, 140, 15, 55])
plt.show()
```
这里我们添加了海岸线、国家边界、湖泊和河流等要素,并通过 `set_extent()` 方法指定了地图范围。
最后,我们可以使用 `scatter()` 方法在地图上绘制散点图:
```python
import numpy as np
lons = np.random.randint(70, 140, size=100)
lats = np.random.randint(15, 55, size=100)
data = np.random.rand(100)
fig, ax = plt.subplots(subplot_kw=dict(projection=ccrs.PlateCarree()))
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.BORDERS)
ax.add_feature(cfeature.LAKES, alpha=0.5)
ax.add_feature(cfeature.RIVERS)
ax.set_extent([70, 140, 15, 55])
ax.scatter(lons, lats, c=data, transform=ccrs.PlateCarree())
plt.show()
```
这里生成了一组随机的经纬度数据,并使用 `scatter()` 方法在地图上绘制出来。
完整代码如下:
```python
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import numpy as np
lons = np.random.randint(70, 140, size=100)
lats = np.random.randint(15, 55, size=100)
data = np.random.rand(100)
fig, ax = plt.subplots(subplot_kw=dict(projection=ccrs.PlateCarree()))
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.BORDERS)
ax.add_feature(cfeature.LAKES, alpha=0.5)
ax.add_feature(cfeature.RIVERS)
ax.set_extent([70, 140, 15, 55])
ax.scatter(lons, lats, c=data, transform=ccrs.PlateCarree())
plt.show()
```
阅读全文