# Python怎么用matplotlib工具包來繪制世界地圖
數據可視化是數據分析的重要環節,而地圖繪制則是展示地理信息的有效方式。Python的`matplotlib`工具包結合`Basemap`或`Cartopy`擴展庫可以高效繪制世界地圖。本文將詳細介紹從環境配置到完整實現的完整流程。
## 一、環境準備
### 1.1 安裝必要庫
```bash
pip install matplotlib numpy
# Basemap安裝方式(已停止維護但仍可用)
pip install basemap
# 或使用現代替代方案Cartopy
pip install cartopy
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
plt.figure(figsize=(12, 8))
m = Basemap(projection='mill', llcrnrlat=-60, urcrnrlat=90,
llcrnrlon=-180, urcrnrlon=180, resolution='c')
m.drawcoastlines()
m.drawcountries(linewidth=1.5)
plt.title("Basic World Map")
plt.show()
projections = ['cyl', 'mill', 'robin']
for proj in projections:
m = Basemap(projection=proj, lat_0=0, lon_0=0)
m.bluemarble() # 使用NASA藍色星球底圖
plt.title(f"{proj} Projection")
plt.show()
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='coral', lake_color='aqua')
m.drawrivers(color='blue', linewidth=0.5)
m.drawparallels(range(-90, 91, 30), labels=[1,0,0,0])
m.drawmeridians(range(-180, 181, 60), labels=[0,0,0,1])
import cartopy.crs as ccrs
import cartopy.feature as cfeature
fig = plt.figure(figsize=(15, 10))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)
ax.add_feature(cfeature.COASTLINE, linewidth=0.5)
ax.gridlines(draw_labels=True)
# 添加自然地球數據
ax.add_feature(cfeature.BORDERS, linestyle=':')
ax.add_feature(cfeature.LAKES, alpha=0.5)
ax.add_feature(cfeature.RIVERS)
# 設置地圖范圍
ax.set_extent([-20, 60, -40, 45])
import pandas as pd
data = {
'Country': ['USA', 'Brazil', 'India', 'Russia'],
'Cases': [32800000, 14700000, 13000000, 4800000],
'Lon': [-98.58, -47.88, 78.96, 37.61],
'Lat': [39.82, -15.78, 20.59, 55.75]
}
df = pd.DataFrame(data)
m = Basemap(projection='robin', lon_0=0, resolution='c')
x, y = m(df['Lon'].values, df['Lat'].values)
m.scatter(x, y, s=df['Cases']/100000, c='red', alpha=0.5)
m.drawcountries()
plt.title("COVID-19 Cases Bubble Map")
plt.colorbar(label='Cases (100k)')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
resolution='l'
(低分辨率)加速渲染m.shiftdata
處理國際日期變更線# 經緯度轉地圖坐標
x, y = m(lons, lats)
# 反向轉換
lon, lat = m(x, y, inverse=True)
from mpl_toolkits.mplot3d import Axes3D
m = Basemap(projection='ortho', lat_0=30, lon_0=-60)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
mpld3
庫實現網頁交互:import mpld3
mpld3.enable_notebook()
通過本文介紹的方法,您可以輕松創建專業級的世界地圖可視化。建議在實際項目中優先使用Cartopy,因其更活躍的維護和更現代的API設計。完整代碼示例可在GitHub倉庫獲?。ㄊ纠溄樱?。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。