http://cctv5.mcgzjx.com
http://tv3.mcgzjx.com
http://tv2.mcgzjx.com
http://tv1.mcgzjx.com
http://mcgzjx.com
Basemap是Matplotlib的一个扩展工具包,用于在Python中绘制2D地图。它能够:
注意:Basemap目前处于维护模式,官方推荐使用Cartopy作为替代。但Basemap仍被广泛使用,且拥有丰富的示例和文档。
使用Anaconda安装(推荐):
conda install -c conda-forge basemap
使用pip安装:
pip install basemap
安装依赖库:
pip install matplotlib numpy pillow
以下代码创建一个简单的世界地图:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 创建地图实例
plt.figure(figsize=(12, 8))
m = Basemap(projection='mill', llcrnrlat=-60, urcrnrlat=80,
llcrnrlon=-180, urcrnrlon=180, resolution='c')
# 绘制海岸线、国家边界等
m.drawcoastlines(linewidth=0.5)
m.drawcountries(linewidth=0.5)
m.drawmapboundary(fill_color='#c6e0ff')
m.fillcontinents(color='#f0e6d2', lake_color='#c6e0ff')
# 添加经纬度网格
m.drawparallels(range(-60, 81, 30), labels=[1,0,0,0])
m.drawmeridians(range(-180, 181, 60), labels=[0,0,0,1])
# 添加标题
plt.title("Basemap基础世界地图", fontsize=16)
# 显示地图
plt.show()
Basemap支持30多种投影方式,常见的有:
将数据点添加到地图上:
# 定义城市坐标(经度,纬度)
cities = {
'北京': (116.4, 39.9),
'上海': (121.47, 31.23),
'广州': (113.26, 23.12),
'成都': (104.06, 30.67)
}
# 创建中国地图
plt.figure(figsize=(10, 8))
m = Basemap(projection='lcc', lat_0=35, lon_0=105,
width=5e6, height=5e6, resolution='h')
m.drawcoastlines()
m.drawcountries(linewidth=1.5)
m.drawmapboundary(fill_color='#c6e0ff')
m.fillcontinents(color='#f0e6d2', lake_color='#c6e0ff')
# 添加城市标记
for city, (lon, lat) in cities.items():
x, y = m(lon, lat)
m.plot(x, y, 'ro', markersize=8)
plt.text(x, y, city, fontsize=12, color='#c0392b')
plt.title("中国主要城市分布图", fontsize=16)
plt.show()
连接点形成轨迹:
# 台风路径坐标
path = [
(125.0, 15.0), (123.0, 16.5), (121.0, 18.0),
(119.0, 20.0), (118.0, 22.5), (118.5, 25.0)
]
# 创建地图
plt.figure(figsize=(10, 8))
m = Basemap(projection='merc', llcrnrlat=10, urcrnrlat=30,
llcrnrlon=110, urcrnrlon=130, resolution='h')
m.drawcoastlines()
m.drawcountries()
m.drawmapboundary(fill_color='#c6e0ff')
m.fillcontinents(color='#f0e6d2', lake_color='#c6e0ff')
# 绘制路径
lons, lats = zip(*path)
x, y = m(lons, lats)
m.plot(x, y, 'b-', linewidth=2) # 路径线
m.plot(x, y, 'ro', markersize=6) # 路径点
# 添加起点和终点标签
plt.text(x[0], y[0], '起点', fontsize=10, color='#27ae60')
plt.text(x[-1], y[-1], '终点', fontsize=10, color='#c0392b')
plt.title("台风路径模拟图", fontsize=16)
plt.show()
问题: 安装时出现依赖错误
解决: 使用Anaconda安装或尝试:
pip install basemap --only-binary :all:
问题: 地图显示空白或只有轮廓
解决: 检查坐标范围设置,确保在合理范围内:
# 中国地图合理范围示例
llcrnrlon=70, urcrnrlon=140,
llcrnrlat=15, urcrnrlat=55
问题: 经纬度标签重叠显示
解决: 调整网格间距和标签位置:
# 每30度绘制一条纬线,只在左侧显示标签
m.drawparallels(range(-90, 91, 30),
labels=[1,0,0,0])
Basemap是一个强大的地理数据可视化工具,通过本教程你学会了:
虽然Basemap已被Cartopy取代,但它仍然是地理数据可视化的重要工具。掌握Basemap能为学习更先进的地理可视化库打下坚实基础。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。