温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用用 Python 绘制地理图

发布时间:2021-07-24 14:08:01 来源:亿速云 阅读:199 作者:chen 栏目:大数据
# 怎么用 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:添加底图


绘制基础矢量地图

示例1:使用 GeoPandas 绘制国家边界

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() 

怎么用用 Python 绘制地理图

自定义样式参数

  • color:填充颜色
  • edgecolor:边界线颜色
  • linewidth:边界线粗细

添加数据可视化层

示例2:人口密度分级着色

# 按人口密度分类着色 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


创建交互式地图

示例3:使用 Folium 创建可缩放地图

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') 

怎么用用 Python 绘制地理图

进阶功能

  • 添加GeoJSON图层
  • 集成OpenStreetMap/Mapbox底图
  • 绘制圆形/多边形标记

进阶技巧:热力图与3D地形

示例4:使用 Plotly 创建3D地形图

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() 

示例5:Folium 热力图

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() 

常见问题解答

Q1:如何解决中文显示乱码?

plt.rcParams['font.sans-serif'] = ['SimHei'] # Windows系统 plt.rcParams['axes.unicode_minus'] = False 

Q2:如何加速大型地理数据集渲染?

  • 使用 simplify() 方法降低几何复杂度
  • 转换为 Web 墨卡托投影(EPSG:3857)

推荐学习资源

  1. GeoPandas 官方文档
  2. Folium 示例库
  3. Plotly 地图图表指南

通过以上方法,您已掌握 Python 地理绘图的核心技能。实际应用中建议结合具体数据特点选择合适的可视化方案。 “`

(注:本文实际字数为约1200字,如需扩展至1850字,可增加以下内容: - 更多实战案例(如气象数据、交通网络) - 坐标系转换详细教程 - 性能优化专项章节 - 各库的API对比表格)

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI