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,打开文件后会看到如下内容。

파이썬 지도 시각화 라이브러리 - Folium 라이브러리 이용
( 韩国首都首尔地图 )
导入叶片

# 首尔的经纬度
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')

代码评注:

  1. 导入叶片导入 Folium 库。
  2. seoul_lat, seoul_lon = 37.5665, 126.9780经度和纬度:将首尔的经度和纬度存储在一个变量中。
  3. m = folium.Map(...)使用 Folium 创建地图对象。 地点是地图的中心坐标、 zoom_start设置初始缩放级别。
  4. folium.Marker(...)在指定位置添加标记。 弹出窗口是点击标记时显示的文本。
  5. m.save('seoul_map.html')将生成的地图保存为 HTML 文件。

这将创建首尔市中心的互动地图。是不是很酷?

2. GeoPandas:地理数据处理的动力源泉

GeoPandas 是一个专门处理地理数据的库,可以将其视为 Pandas 的扩展。让我们利用这个 Python 地图可视化库。

安装 GeoPandas 可能有点麻烦,请尝试使用下面的命令进行安装。

pip install geopandas

现在,我们将使用 GeoPandas 绘制一幅简单的世界地图。

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

代码评注:

  1. 导入 geopandas 为 gpd
    • 以别名 "gpd "导入 GeoPandas 库。
    • 用于处理地理空间数据的 Python 库。
  2. import matplotlib.pyplot as plt
    • 以别名 "plt "从 Matplotlib 导入 pyplot 模块。
    • Python 中使用最广泛的数据可视化库。
  3. url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip"
    • 指定自然地球提供的世界地图数据的 URL。
    • 110m 表示分辨率为 1:110,000,000 比例尺。
  4. world = gpd.read_file(url)
    • 直接从 URL 读取地理数据并将其存储为 GeoDataFrame。
    • 自动处理 ZIP 文件并导入地理数据。
  5. world.plot(figsize=(15, 10))
    • 将导入的世界地图数据可视化。
    • 使用 figsize=(15, 10) 将尺寸设置为宽 15 英寸、高 10 英寸。
  6. plt.title('World Map', fontsize=16)
    • 在地图顶部添加标题 "世界地图"。
    • 使用 fontsize=16 将字体大小设置为 16 点。
  7. plt.savefig('world_map.png')
    • 将生成的地图保存为 "world_map.png "文件。
    • 它以 PNG 格式保存在当前工作目录下。
  8. plt.show()
    • 在屏幕上显示生成的地图。
    • 在交互式环境(如 Jupiter Notebooks)中,它会以内联方式显示。
  9. 在正常的 Python 脚本中,它会显示在一个单独的窗口中。

3. Matplotlib:返璞归真的可视化

Matplotlib 是 Python 的默认可视化库,也可用于地图可视化,但由于必须直接操作地图数据,因此可能有点复杂。

按需提供 pip install basemap 命令来安装其他软件包。让我们利用这个 Python 地图可视化库。

Matplotlib로 그린 세계 지도 이미지
(用 Matplotlib 绘制的世界地图)
将 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()

代码评注:

  1. 从 mpl_toolkits.basemap 导入 Basemap导入 Basemap 模块。
  2. m = Basemap(...)创建地图对象。在这里您可以设置地图的投影和范围。
  3. m.drawcoastlines(), m.drawcountries()绘制海岸线和边界。
  4. m.drawparallels(...), m.drawmeridians(...)绘制经纬线。
  5. plt.title(...)为地图添加标题。
  6. plt.savefig(...), plt.show()保存地图并显示在屏幕上。

Matplotlib 具有很强的可调性,因此您可以根据自己的喜好定制地图!

4. Plotly:互动可视化之王

Plotly 是一个用于创建交互式可视化的强大库,对于地图可视化也非常有用。 在本教程中,我们将使用 Plotly Python 地图可视化库。

Plotly 그린 서울 지도
( 绘制的首尔地图 )
将 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()

代码评注:

  1. 将 plotly.graph_objects 导入 go获取 Plotly 的图形对象。
  2. fig = go.Figure(go.Scattermapbox(...))创建对象,在地图上放置标记。
  3. fig.update_layout(...)设置地图的样式、中心坐标、缩放级别等。
  4. fig.show()在屏幕上显示生成的地图。

使用 Plotly 创建的地图非常酷,而且具有交互性--您可以用鼠标缩放和平移地图!

这就是 Python 中不同的地图可视化库,它们各有特点、长处和短处。 Folium 可以轻松创建交互式地图,GeoPandas 非常适合地理数据分析,Matplotlib 具有很高的可调性,而 Plotly 则提供了花哨的交互性。

选择一个适合你的项目或数据的库,然后试一试。 一开始可能会觉得很困难,但坚持练习,你会发现自己很快就能制作出令人惊叹的地图可视化效果!

对了,你看地图的原因之一是为了旅行,对吗? Python 地图可视化:获得永不后悔的路线(特色:folium 软件包) 何不看看我们的岗位评论,看看您的方向?

# 术语表

  1. 可视化:数据的图形表示。地图可视化是指以地图的形式表示地理数据。
  2. 图书馆代码集:包含编程中常用函数的代码集。在 Python 中, 舶来品 语句来加载和使用该库。
  3. 交互式交互性是指与用户互动的能力。交互式地图可以放大、缩小、平移等。
  4. 纬度和经度描述地球上某一位置的坐标系。纬度是相对于赤道的南北角度,经度是相对于本初子午线的东西角度。
  5. 标记在地图上标记特定位置的点或图标。
  6. 缩放级别这是一个表示地图放大程度的数字,数字越大,地图越详细。
  7. 投影是在二维平面上表示三维地球的一种方法。有许多不同的投影方式,各有利弊。
테리 이모티콘
(快乐编码)

类似文章