0

0

在Folium地图中集成交互式图表:详细教程

花韻仙語

花韻仙語

发布时间:2025-12-04 11:59:02

|

1095人浏览过

|

来源于php中文网

原创

在Folium地图中集成交互式图表:详细教程

本教程详细介绍了如何在folium交互式地图中嵌入图表。我们将利用folium库创建地图,结合matplotlib生成数据可视化图表,并通过mpld3库将图表转换为html格式,最终将其作为弹出窗口内容附加到地图上的标记点。文章涵盖了从环境设置、地图创建、图表生成到最终地图保存的完整流程,旨在帮助用户在地理空间数据分析中实现更丰富的数据展示。

在Folium地图中集成交互式图表

Folium是一个强大的Python库,用于创建交互式Leaflet地图,它能够将Python数据可视化结果呈现在地图上。虽然Folium本身不直接支持在地图画布上渲染复杂的交互式图表组件,但可以通过将图表转换为HTML内容,并将其嵌入到地图的弹出窗口(Popup)中,从而实现这一目标。本教程将详细指导您如何使用Matplotlib和mpld3库在Folium地图中添加图表。

1. 环境准备与库导入

在开始之前,请确保您的Python环境中已安装所需的库。如果尚未安装,可以通过pip命令进行安装:

pip install folium matplotlib mpld3

安装完成后,在您的Python脚本或Jupyter Notebook中导入必要的库:

import folium
import matplotlib.pyplot as plt
import mpld3

2. 创建基础Folium地图

首先,我们需要创建一个Folium地图对象。您需要指定地图的初始中心坐标和缩放级别。

# 定义地图中心坐标(例如,北京的某个位置)
latitude, longitude = 39.9042, 116.4074

# 创建一个Folium地图对象
m = folium.Map(location=[latitude, longitude], zoom_start=12)

# 此时,m是一个Folium地图对象,您可以将其保存为HTML文件查看
# m.save('basic_map.html')

请将latitude和longitude替换为您希望地图居中的实际地理坐标。

3. 生成图表数据与可视化

接下来,我们将使用Matplotlib库创建一个简单的图表。这里以一个柱状图为例,您可以根据自己的数据和需求创建其他类型的图表(如折线图、散点图等)。

# 准备图表数据
data = [10, 20, 30, 40, 50]
labels = ['A', 'B', 'C', 'D', 'E']

# 创建Matplotlib图表
fig, ax = plt.subplots(figsize=(6, 4)) # 创建一个图表和子图对象
ax.bar(labels, data, color='skyblue')
ax.set_xlabel('类别')
ax.set_ylabel('数值')
ax.set_title('示例柱状图')
plt.tight_layout() # 调整布局以避免标签重叠

注意: 在将图表转换为HTML时,我们不需要调用plt.show(),因为我们不是要在本地显示图表,而是要获取其图形对象以便后续处理。

Q.AI视频生成工具
Q.AI视频生成工具

支持一分钟生成专业级短视频,多种生成方式,AI视频脚本,在线云编辑,画面自由替换,热门配音媲美真人音色,更多强大功能尽在QAI

下载

4. 将Matplotlib图表转换为HTML

mpld3库能够将Matplotlib图表转换为可嵌入Web页面的交互式HTML和JavaScript。这一步是实现图表在Folium弹出窗口中显示的关键。

# 将当前的Matplotlib图表(plt.gcf() 获取当前图形)转换为HTML字符串
chart_html = mpld3.fig_to_html(fig) # 使用我们之前创建的fig对象

chart_html变量现在包含了图表的完整HTML表示,包括必要的CSS和JavaScript,使其在浏览器中具有交互性。

5. 将HTML图表绑定至地图标记

现在,我们将创建一个地图标记(Marker),并将上一步生成的HTML图表作为该标记的弹出窗口内容。当用户点击地图上的标记时,图表就会显示出来。

# 定义标记的坐标(例如,地图中心附近的一个点)
marker_latitude, marker_longitude = 39.92, 116.42

# 创建一个Folium标记
marker = folium.Marker(
    location=[marker_latitude, marker_longitude],
    tooltip="点击查看图表" # 鼠标悬停提示
)

# 创建一个Folium弹出窗口,内容为图表的HTML
popup = folium.Popup(chart_html, max_width=600) # max_width控制弹出窗口的最大宽度

# 将弹出窗口添加到标记
marker.add_child(popup)

# 将标记添加到地图
marker.add_to(m)

您可以根据需要添加多个标记,每个标记都可以关联不同的图表。

6. 保存与展示地图

最后一步是将包含地图和图表的Folium对象保存为HTML文件。您可以在任何现代Web浏览器中打开此文件进行查看。

# 保存地图为HTML文件
output_file = 'map_with_chart.html'
m.save(output_file)

print(f"地图已保存至:{output_file}")

打开map_with_chart.html文件,您将看到一个交互式地图。点击地图上的标记,一个包含Matplotlib图表的弹出窗口将会出现。

注意事项与总结

  • 图表交互性: 通过mpld3转换的图表在弹出窗口中通常具有一定的交互性,例如缩放、平移等,具体取决于Matplotlib图表的复杂性和mpld3的支持程度。
  • 性能考量: 如果地图上需要展示大量带有复杂图表的标记,可能会影响地图的加载性能。在这种情况下,考虑对数据进行聚合或按需加载图表内容。
  • 替代方案: 本教程侧重于将图表嵌入到Folium的弹出窗口中。如果您的需求是直接在地图画布上渲染更复杂的、类似仪表盘的交互式组件(如原始问题中的GIF所示),可能需要探索其他库,例如ipyleaflet(与Jupyter Widgets深度集成)或结合前端JavaScript库(如D3.js、Plotly.js)与Folium进行更高级的自定义集成。这些方法通常涉及更复杂的开发工作。
  • 图表尺寸: 使用figsize参数调整Matplotlib图表的大小,以确保它在弹出窗口中显示良好。folium.Popup的max_width参数也可以帮助控制弹出窗口的尺寸。

通过上述步骤,您已经成功学会了如何在Folium地图中集成Matplotlib图表,并通过弹出窗口的形式展示它们。这种方法为地理空间数据分析提供了一种有效且直观的数据可视化手段。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

373

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

436

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

802

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

370

2025.07.23

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

530

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

576

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

6178

2023.08.17

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号