Python 地图可视化库完全指南:从 Folium 到 GeoPandas
你好 Python 今天,我们将学习 Python 地图可视化库。 通过地图展示数据是不是很酷? 我相信你一定见过一些很酷的交互式地图,然后想:"哇,我也能做出这样的东西吗?
别担心,通过这篇文章,你就能创建令人惊叹的地图可视化效果。我们将逐一介绍不同的 Python 地图可视化库,并提供即使是初学者也能轻松掌握的示例。
让我们通过探索一些有用的库,如 Folium、GeoPandas、Matplotlib 和 Plotly,并实际编写一些代码,进入地图可视化的世界。
比较 Python 地图可视化库
为了对我们将要介绍的 Python 地图可视化库进行快速比较,我们制作了下表,帮助您了解每个库的功能和用途,从而选择最适合您项目的库。
| 图书馆 | 特点 | 使用案例 |
|---|---|---|
| 对联 | 交互式地图,易于使用,由 Leaflet.js 提供支持 | 为网络应用程序创建交互式地图 |
| GeoPandas | 地理空间数据分析,与 Pandas 集成 | 分析和可视化地理空间数据集 |
| Matplotlib | 高度可定制,支持多种投影方式 | 详细和静态地图可视化 |
| Plotly | 支持交互式可视化、三维和网络地图 | 建立交互式仪表盘和 3D 地图 |
该表显示了每个库的优势:Folium 可以轻松创建网络交互式地图,GeoPandas 专注于地理数据分析,Matplotlib 擅长创建可微调的静态地图,而 Plotly 具有花哨的交互式地图功能和 3D 地图。
根据您的项目目标和所需功能选择合适的库。 有时,结合使用多个库是个不错的主意,例如,用 GeoPandas 分析数据,用 Folium 或 Plotly 将其可视化。
1. Folium - Python 地图可视化库
Folium 是在 Python 中创建交互式地图的最受欢迎的库之一,它建立在 Leaflet.js 的基础之上,可让您在网络浏览器中显示精美的地图。
首先,安装 Folium。
pip install folium现在,让我们创建一个简单的地图。 运行下面的代码后,就会生成显示首尔地图的 HTML,打开文件后会看到如下内容。

导入叶片
# 首尔的经纬度
seoul_lat, seoul_lon = 37.5665, 126.9780
创建 # 地图
m = folium.Map(location=[seoul_lat, seoul_lon], zoom_start=12)
添加 # 标记
folium.Marker([seoul_lat, seoul_lon], popup='Seoul').add_to(m)
保存 # 地图
m.save('seoul_map.html')代码评注:
导入叶片导入 Folium 库。seoul_lat, seoul_lon = 37.5665, 126.9780经度和纬度:将首尔的经度和纬度存储在一个变量中。m = folium.Map(...)使用 Folium 创建地图对象。地点是地图的中心坐标、zoom_start设置初始缩放级别。folium.Marker(...)在指定位置添加标记。弹出窗口是点击标记时显示的文本。m.save('seoul_map.html')将生成的地图保存为 HTML 文件。
这将创建首尔市中心的互动地图。是不是很酷?
2. GeoPandas:地理数据处理的动力源泉
GeoPandas 是一个专门处理地理数据的库,可以将其视为 Pandas 的扩展。让我们利用这个 Python 地图可视化库。
安装 GeoPandas 可能有点麻烦,请尝试使用下面的命令进行安装。
pip install geopandas现在,我们将使用 GeoPandas 绘制一幅简单的世界地图。

import geopandas as gpd
import matplotlib.pyplot as plt
直接从 URL 加载 # 自然地球数据
url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip"
world = gpd.read_file(url)
绘制 # 地图
world.plot(figsize=(15, 10))
添加 # 标题
plt.title('World Map', fontsize=16)
保存 # 地图
plt.savefig('world_map.png')
plt.show()代码评注:
导入 geopandas 为 gpd- 以别名 "gpd "导入 GeoPandas 库。
- 用于处理地理空间数据的 Python 库。
import matplotlib.pyplot as plt- 以别名 "plt "从 Matplotlib 导入 pyplot 模块。
- Python 中使用最广泛的数据可视化库。
url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip"- 指定自然地球提供的世界地图数据的 URL。
- 110m 表示分辨率为 1:110,000,000 比例尺。
world = gpd.read_file(url)- 直接从 URL 读取地理数据并将其存储为 GeoDataFrame。
- 自动处理 ZIP 文件并导入地理数据。
world.plot(figsize=(15, 10))- 将导入的世界地图数据可视化。
- 使用 figsize=(15, 10) 将尺寸设置为宽 15 英寸、高 10 英寸。
plt.title('World Map', fontsize=16)- 在地图顶部添加标题 "世界地图"。
- 使用 fontsize=16 将字体大小设置为 16 点。
plt.savefig('world_map.png')- 将生成的地图保存为 "world_map.png "文件。
- 它以 PNG 格式保存在当前工作目录下。
plt.show()- 在屏幕上显示生成的地图。
- 在交互式环境(如 Jupiter Notebooks)中,它会以内联方式显示。
- 在正常的 Python 脚本中,它会显示在一个单独的窗口中。
3. Matplotlib:返璞归真的可视化
Matplotlib 是 Python 的默认可视化库,也可用于地图可视化,但由于必须直接操作地图数据,因此可能有点复杂。
按需提供 pip install basemap 命令来安装其他软件包。让我们利用这个 Python 地图可视化库。

将 matplotlib.pyplot 导入 plt
从 mpl_toolkits.basemap 导入 Basemap
创建 # 地图
m = Basemap(projection='mill', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180, resolution='c')
绘制 # 海岸线和边界
m.drawcoastlines()
m.drawcountries()
# 绘制纬度和经度
m.drawparallels(range(-90, 91, 30), labels=[1,0,0,0,0])
m.drawmeridians(range(-180, 181, 60), labels=[0,0,0,0,1])
# 添加标题
plt.title('Matplotlib 绘制的世界地图')
# 保存并显示地图
plt.savefig('matplotlib_world_map.png')
plt.show()代码评注:
从 mpl_toolkits.basemap 导入 Basemap导入 Basemap 模块。m = Basemap(...)创建地图对象。在这里您可以设置地图的投影和范围。m.drawcoastlines(),m.drawcountries()绘制海岸线和边界。m.drawparallels(...),m.drawmeridians(...)绘制经纬线。plt.title(...)为地图添加标题。plt.savefig(...),plt.show()保存地图并显示在屏幕上。
Matplotlib 具有很强的可调性,因此您可以根据自己的喜好定制地图!
4. Plotly:互动可视化之王
Plotly 是一个用于创建交互式可视化的强大库,对于地图可视化也非常有用。 在本教程中,我们将使用 Plotly Python 地图可视化库。

将 plotly.graph_objects 导入 go
创建 # 地图数据
fig = go.Figure(go.Scattermapbox(
mode = "markers"、
lon = [126.9780]、
lat = [37.5665]、
marker = {'size':20}))
设置 # 地图布局
fig.update_layout(
mapbox = {
样式"open-street-map"、
'center':{ 'lon':126.9780, 'lat':37.5665},
缩放':10},
showlegend = False)
显示 # 地图
fig.show()代码评注:
将 plotly.graph_objects 导入 go获取 Plotly 的图形对象。fig = go.Figure(go.Scattermapbox(...))创建对象,在地图上放置标记。fig.update_layout(...)设置地图的样式、中心坐标、缩放级别等。fig.show()在屏幕上显示生成的地图。
使用 Plotly 创建的地图非常酷,而且具有交互性--您可以用鼠标缩放和平移地图!
这就是 Python 中不同的地图可视化库,它们各有特点、长处和短处。 Folium 可以轻松创建交互式地图,GeoPandas 非常适合地理数据分析,Matplotlib 具有很高的可调性,而 Plotly 则提供了花哨的交互性。
选择一个适合你的项目或数据的库,然后试一试。 一开始可能会觉得很困难,但坚持练习,你会发现自己很快就能制作出令人惊叹的地图可视化效果!
对了,你看地图的原因之一是为了旅行,对吗? Python 地图可视化:获得永不后悔的路线(特色:folium 软件包) 何不看看我们的岗位评论,看看您的方向?
# 术语表
- 可视化:数据的图形表示。地图可视化是指以地图的形式表示地理数据。
- 图书馆代码集:包含编程中常用函数的代码集。在 Python 中,
舶来品语句来加载和使用该库。 - 交互式交互性是指与用户互动的能力。交互式地图可以放大、缩小、平移等。
- 纬度和经度描述地球上某一位置的坐标系。纬度是相对于赤道的南北角度,经度是相对于本初子午线的东西角度。
- 标记在地图上标记特定位置的点或图标。
- 缩放级别这是一个表示地图放大程度的数字,数字越大,地图越详细。
- 投影是在二维平面上表示三维地球的一种方法。有许多不同的投影方式,各有利弊。







