folium,一个超强的 Python 库!

大家好,今天为大家分享一个超强的 Python 库 - folium。

Github地址:https://github.com/python-visualization/folium

在数据可视化的领域中,地理信息可视化(Geospatial Visualization)是一个重要且实用的分支,能够直观展示地理数据的分布和变化。Folium 是基于 Leaflet.js 的 Python 库,它让我们能够轻松创建交互式地图并将其嵌入到网页或笔记本中。无论是显示简单的地图标记,还是绘制复杂的地理数据,Folium 都能提供直观易用的接口。本篇文章将介绍 Folium 库的安装、特性、基本和高级功能,并结合实际应用场景,展示如何使用该库进行地理数据可视化。

这里插播一条粉丝福利,如果你正在学习Python或者有计划学习Python,想要突破自我,对未来十分迷茫的,可以点击这里获取最新的Python学习资料和学习路线规划(免费分享,记得关注)

安装

Folium 安装非常简单,可以通过 pip 安装:

pip install folium

安装完成后,可以在 Python 环境中导入 Folium 并开始创建地图。

特性

  1. 简单易用:通过 Python API 快速创建交互式地图,无需深入了解 JavaScript

  2. 与 GeoJSON 数据集无缝集成:支持从 GeoJSONShapefile 等地理数据格式直接绘制地图。

  3. 多种地图类型:支持不同的地图图层,包括 OpenStreetMapStamen Terrain 等,满足不同的视觉需求。

  4. 可扩展性强:可以通过 MarkerCirclePolyline 等丰富的元素扩展地图功能。

  5. 支持多种可视化样式:支持热力图(Heatmap)、着色地图(Choropleth map)等高级地理可视化效果。

基本功能

1. 创建简单地图

Folium 的核心功能是创建交互式地图。以下示例展示了如何在指定的经纬度创建一个简单的地图,并将其保存为 HTML 文件。

import folium

# 创建地图对象,指定中心点和缩放等级
m = folium.Map(location=[40.7128, -74.0060], zoom_start=12)

# 保存地图到HTML文件
m.save("simple_map.html")

在这个示例中,创建了一个以纽约市为中心的地图,并将其保存为 simple_map.html 文件。

2. 添加标记

标记(Marker)是最常用的地图元素之一,Folium 允许我们在地图上添加多个标记,并为其设置弹出窗口显示额外信息。

import folium

# 创建地图对象
m = folium.Map(location=[40.7128, -74.0060], zoom_start=12)

# 添加标记
folium.Marker([40.7128, -74.0060], popup="New York City").add_to(m)
folium.Marker([40.730610, -73.935242], popup="Another Location").add_to(m)

# 保存地图到HTML文件
m.save("map_with_markers.html")

在这个示例中,在地图上添加了两个标记,点击标记时会显示一个弹出窗口,展示相关的信息。

3. 添加圆形和折线

除了标记之外,Folium 还支持在地图上添加不同的几何形状,如圆形(Circle)和折线(Polyline)。

import folium

# 创建地图对象
m = folium.Map(location=[40.7128, -74.0060], zoom_start=12)

# 添加圆形
folium.Circle(
    radius=500,
    location=[40.7128, -74.0060],
    popup="Radius 500 meters",
    color="blue",
    fill=True,
).add_to(m)

# 添加折线
folium.PolyLine(locations=[[40.7128, -74.0060], [40.730610, -73.935242]], color="red").add_to(m)

# 保存地图到HTML文件
m.save("map_with_shapes.html")

在这个示例中,在地图上添加了一个半径为 500 米的蓝色圆形和一条红色折线。

高级功能

1. 绘制 Choropleth 地图(分级着色地图)

分级着色地图(Choropleth Map)是一种使用颜色的变化来展示地理区域数值差异的地图,常用于展示人口密度、经济水平等地理数据。Folium 提供了绘制分级着色地图的功能,支持从 GeoJSON 数据集中读取地理信息。

import folium
import pandas as pd

# 创建地图对象
m = folium.Map(location=[37.8, -96], zoom_start=4)

# 加载示例数据
data = pd.DataFrame({
    'State': ['California', 'Texas', 'New York', 'Florida'],
    'Population': [39538223, 29145505, 20201249, 21538187],
    'lat': [36.7783, 31.9686, 40.7128, 27.9944],
    'lon': [-119.4179, -99.9018, -74.0060, -81.7603]
})

# 绘制分级着色地图
folium.Choropleth(
    geo_data='us-states.json',  # GeoJSON 文件
    name='choropleth',
    data=data,
    columns=['State', 'Population'],
    key_on='feature.properties.name',
    fill_color='YlGnBu',
    fill_opacity=0.7,
    line_opacity=0.2,
    legend_name='Population by State'
).add_to(m)

# 保存地图到HTML文件
m.save("choropleth_map.html")

在这个示例中,创建了一个展示美国各州人口的分级着色地图。Folium 使用 GeoJSON 文件定义区域边界,并根据区域的属性为其着色。

2. 热力图(Heatmap)

热力图是一种常用于展示空间数据密度的可视化手段。Folium 通过扩展支持热力图显示,可以很容易地将大量地理数据点以颜色强度的形式显示在地图上。

import folium
from folium.plugins import HeatMap

# 创建地图对象
m = folium.Map(location=[37.7749, -122.4194], zoom_start=12)

# 示例数据:多组经纬度
heat_data = [[37.7749, -122.4194], [37.7849, -122.4094], [37.7649, -122.4294]]

# 添加热力图
HeatMap(heat_data).add_to(m)

# 保存地图到HTML文件
m.save("heatmap.html")

在这个示例中,使用 HeatMap 类创建了一个展示特定地理位置密度的热力图。

3. 层叠控制(Layer Control)

Folium 允许在同一地图上叠加多个图层,并通过图层控制器(Layer Control)在不同的地图图层之间进行切换。

import folium

# 创建地图对象
m = folium.Map(location=[37.7749, -122.4194], zoom_start=12)

# 添加不同的图层
folium.TileLayer('Stamen Terrain').add_to(m)
folium.TileLayer('Stamen Toner').add_to(m)

# 添加图层控制
folium.LayerControl().add_to(m)

# 保存地图到HTML文件
m.save("map_with_layers.html")

这个示例展示了如何在地图上添加多个图层,并通过图层控制器在不同图层之间切换,适合在同一地图上展示多种数据。

实际应用场景

1. 数据科学中的地理可视化

Folium 常用于数据科学领域中的地理数据可视化任务。

import folium
from folium.plugins import HeatMap

# 创建地图对象
m = folium.Map(location=[37.7749, -122.4194], zoom_start=12)

# 模拟的用户地理分布数据
user_data = [
    [37.7749, -122.4194], [37.7849, -122.4094], [37.7649, -122.4294],
    [37.7549, -122.4494], [37.7949, -122.3994]
]

# 添加热力图
HeatMap(user_data).add_to(m)

# 保存地图
m.save("user_distribution.html")

通过此示例,可以将用户分布数据可视化在地图上,观察用户集中在哪些区域,帮助制定市场策略。

2. 物流和配送路径规划

对于物流和配送领域,Folium 可以用于显示配送路线和各个配送点的位置。

import folium

# 创建地图对象
m = folium.Map(location=[37.7749, -122.4194], zoom_start=12)

# 添加配送路线
folium.PolyLine(
    locations=[[37.7749, -122.4194], [37.7849, -122.4294], [37.7649, -122.4494]],
    color='blue'
).add_to(m)

# 添加仓库和配送点
folium.Marker([37.7749, -122.4194], popup="仓库").add_to(m)
folium.Marker([37.7849, -122.4294], popup="配送点A").add_to(m)
folium.Marker([37.7649, -122.4494], popup="配送点B").add_to(m)

# 保存地图
m.save("logistics_route.html")

此示例展示了如何将物流配送路径及相关节点可视化,帮助物流公司更好地管理路线和配送点。

3. 地理教学与演示

Folium 也广泛应用于地理教学中,通过互动式地图让学生更直观地了解地理知识。

import folium

# 创建地图对象
m = folium.Map(location=[20.0, 0.0], zoom_start=2)

# 标注不同的国家
folium.Marker([51.5074, -0.1278], popup="伦敦,英国").add_to(m)
folium.Marker([48.8566, 2.3522], popup="巴黎,法国").add_to(m)
folium.Marker([35.6895, 139.6917], popup="东京,日本").add_to(m)

# 保存地图
m.save("geography_class.html")

通过这个简单的例子,教师可以在地图上标注不同国家的首都,帮助学生更好地理解地理位置与国界。

总结

Python Folium 是一个功能强大且易于使用的地理可视化工具,它能够帮助开发者轻松创建交互式地图,并为地理数据的展示提供多种丰富的可视化效果。无论是数据科学中的地理分析、物流配送的路径规划,还是地理教学中的互动演示,Folium 都能够提供直观且高效的解决方案。通过本文的介绍和示例代码,希望大家能够掌握 Folium 的基本和高级功能,并灵活地将其应用于各种实际场景中。

我们还为大家准备了Python资料,感兴趣的小伙伴快来找我领取一起交流学习哦!

🌟 学习大礼包包含内容

Python全领域学习路线图:一目了然,指引您从基础到进阶,再到专业领域的每一步学习路径,明确各方向的核心知识点。

超百节Python精品视频课程:涵盖Python编程的必备基础知识、高效爬虫技术、以及深入的数据分析技能,让您技能全面升级。

实战案例集锦:精选超过100个实战项目案例,从理论到实践,让您在解决实际问题的过程中,深化理解,提升编程能力。

华为独家Python漫画教程:创新学习方式,以轻松幽默的漫画形式,让您随时随地,利用碎片时间也能高效学习Python。

互联网企业Python面试真题集:精选历年知名互联网企业面试真题,助您提前备战,面试准备更充分,职场晋升更顺利。

👉 立即领取方式:只需【点击这里】,即刻解锁您的Python学习新篇章!让我们携手并进,在编程的海洋里探索无限可能!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值