# 怎么用 Python 繪制地理圖
地理數據可視化是數據分析中的重要環節,Python 憑借豐富的庫生態系統(如 `geopandas`、`folium`、`plotly` 等)成為地理繪圖的利器。本文將詳細介紹從基礎到進階的地理繪圖方法,涵蓋矢量地圖、熱力圖、交互式地圖等場景。
---
## 目錄
1. [準備工作:安裝必要庫](#準備工作安裝必要庫)
2. [繪制基礎矢量地圖](#繪制基礎矢量地圖)
3. [添加數據可視化層](#添加數據可視化層)
4. [創建交互式地圖](#創建交互式地圖)
5. [進階技巧:熱力圖與3D地形](#進階技巧熱力圖與3d地形)
6. [實戰案例:全球疫情數據可視化](#實戰案例全球疫情數據可視化)
---
## 準備工作:安裝必要庫
在開始前,需安裝以下 Python 庫:
```bash
pip install geopandas matplotlib folium plotly mapclassify contextily
關鍵庫功能說明: - geopandas:處理地理空間數據 - folium:基于 Leaflet 的交互式地圖 - plotly:動態可視化 - contextily:添加底圖
import geopandas as gpd
import matplotlib.pyplot as plt
# 加載世界地圖數據(自然地球數據集)
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
# 繪制地圖
fig, ax = plt.subplots(figsize=(15, 10))
world.plot(ax=ax, color='lightgrey', edgecolor='black')
ax.set_title("World Map with Country Boundaries")
plt.show()
color:填充顏色edgecolor:邊界線顏色linewidth:邊界線粗細# 按人口密度分類著色
world['pop_density'] = world['pop_est'] / world['area']
world.plot(column='pop_density',
cmap='OrRd',
scheme='quantiles',
legend=True,
figsize=(15, 10))
plt.title("World Population Density")
關鍵參數:
- column:著色依據的列
- cmap:顏色映射(如 viridis, plasma)
- scheme:分類方法(quantiles/equal_interval)
import folium
# 創建中心位于中國的地圖
m = folium.Map(location=[35, 105], zoom_start=4)
# 添加標記點
folium.Marker(
location=[39.9, 116.4],
popup="Beijing",
icon=folium.Icon(color='red')
).add_to(m)
# 保存為HTML
m.save('china_map.html')
import plotly.express as px
# 加載示例數據集
df = px.data.gapminder().query("year == 2007")
fig = px.scatter_geo(df,
locations="iso_alpha",
size="pop",
hover_name="country",
projection="orthographic")
fig.show()
from folium.plugins import HeatMap
import numpy as np
# 生成隨機坐標數據
data = np.random.normal(size=(100, 2)) * np.array([[1, 1]]) + np.array([[39, 116]])
# 創建熱力圖層
m = folium.Map([39, 116], zoom_start=5)
HeatMap(data).add_to(m)
import pandas as pd
# 假設已有包含經緯度的疫情數據
covid_data = pd.read_csv("covid_stats.csv")
# 氣泡地圖展示病例數
fig = px.scatter_geo(covid_data,
lat='latitude',
lon='longitude',
size='cases',
color='deaths',
hover_name='country',
projection='natural earth')
fig.update_layout(title="Global COVID-19 Distribution")
fig.show()
plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows系統
plt.rcParams['axes.unicode_minus'] = False
simplify() 方法降低幾何復雜度通過以上方法,您已掌握 Python 地理繪圖的核心技能。實際應用中建議結合具體數據特點選擇合適的可視化方案。 “`
(注:本文實際字數為約1200字,如需擴展至1850字,可增加以下內容: - 更多實戰案例(如氣象數據、交通網絡) - 坐標系轉換詳細教程 - 性能優化專項章節 - 各庫的API對比表格)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。