Basemap,一个超实用的地图绘制库!

文摘   2024-12-13 00:03   贵州  

点击“蓝字”  关注我们


大家好,我是安夏学姐!今天要给大家介绍一个超级实用的 Python 库 - Basemap。它是 Matplotlib 的扩展工具包,专门用来绘制地图。不管是想做数据可视化,还是地理信息分析,Basemap 都能帮你轻松搞定。让我们一起来探索这个强大的地图绘制工具吧!

## 安装 Basemap

我们需要安装 Basemap。最简单的方式是使用 conda:

```python

conda install basemap

如果你使用 pip,也可以这样安装:


pip install basemap

小贴士:建议使用 conda 安装,因为它会自动处理依赖关系,避免安装过程中的各种报错。


绘制世界地图

让我们从最基础的开始 - 绘制一个简单的世界地图:


from mpl_toolkits.basemap import Basemap

import matplotlib.pyplot as plt

# 创建画布

plt.figure(figsize=(15, 10))

# 创建地图对象

m = Basemap(projection='mill',

llcrnrlat=-90, # 纬度范围

llcrnrlon=-180, # 经度范围

urcrnrlat=90,

urcrnrlon=180,

resolution='l') # 分辨率

# 绘制基本要素

m.drawcoastlines() # 海岸线

m.drawcountries() # 国界

m.fillcontinents(color='coral', lake_color='aqua')

m.drawmapboundary(fill_color='aqua')

plt.title('世界地图')

plt.show()

添加标记和文本

地图绘制好了,接下来我们来添加一些标记点,比如标注几个主要城市:


# 继续使用上面的地图对象 m

cities = {

'北京': (116.4, 39.9),

'东京': (139.7, 35.7),

'纽约': (-74.0, 40.7)

}

for city, coords in cities.items():

x, y = m(coords[0], coords[1])

m.plot(x, y, 'ro', markersize=10) # 红色圆点标记

plt.text(x, y, city, fontsize=12)

plt.show()

小贴士:使用 m(lon, lat) 可以将经纬度坐标转换为地图投影坐标。


自定义地图投影

Basemap 支持多种地图投影方式,这里我们尝试使用兰伯特投影来绘制中国地图:


plt.figure(figsize=(15, 10))

m = Basemap(projection='lcc', # Lambert Conformal projection

llcrnrlat=15, # 设置中国地图范围

llcrnrlon=70,

urcrnrlat=55,

urcrnrlon=140,

lat_0=35, # 中心纬度

lon_0=105, # 中心经度

resolution='l')

m.drawcoastlines()

m.drawcountries()

m.drawprovinces() # 绘制省界

m.fillcontinents(color='lightgray')

plt.title('中国地图(兰伯特投影)')

plt.show()

注意事项:


  1. 不同的投影方式适合不同的地理区域,选择合适的投影可以减少地图变形
  2. resolution 参数可选值有 ‘c’(粗糙)、’l’(低)、’i’(中)、’h’(高)、’f’(最高)
  3. 分辨率越高,绘图越慢,文件也越大

绘制数据可视化图层

Basemap 最强大的地方在于,它可以结合 Matplotlib 的各种功能,在地图上叠加数据可视化图层:


import numpy as np

# 生成一些随机数据点

lons = np.random.uniform(70, 140, 50)

lats = np.random.uniform(15, 55, 50)

data = np.random.uniform(0, 100, 50)

# 转换坐标

x, y = m(lons, lats)

# 绘制散点图

scatter = m.scatter(x, y, c=data,

cmap='YlOrRd',

s=100,

alpha=0.5)

plt.colorbar(scatter, label='数值')

plt.show()

小贴士:结合 Pandas 处理实际数据时,记得先清理数据,确保经纬度值在合理范围内。


总结要点

  1. Basemap 是基于 Matplotlib 的地图绘制工具
  2. 主要功能包括:基础地图绘制、坐标转换、地图投影
  3. 可以结合 Matplotlib 实现丰富的数据可视化效果
  4. 注意选择合适的投影方式和分辨率

小伙伴们,今天的 Python 学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问安夏学姐我哦。祝大家学习愉快,Python 学习节节高!


Would you like me to explain or break down this code?

·end·

—如果喜欢,快分享给你的朋友们吧—

我们一起愉快的玩耍吧




EV电车视点
优质原创公众号
 最新文章