# 怎么用 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。