Folium在地图上展示数据

简介: 【10月更文挑战第17天】本文介绍了如何使用Python中的Folium库进行地理可视化。Folium是一个基于Leaflet.js的库,可以轻松创建交互式地图。文章从安装Folium开始,逐步讲解了如何创建地图、添加标记点、展示热力图、自定义图层样式、绘制形状、添加图例和文本标签等内容。通过这些示例,读者可以学会如何利用Folium进行地理数据的可视化,从而更好地理解和展示数据的空间分布。

地理可视化是数据科学领域中的一个重要方面,它能帮助我们更好地理解和展示数据的空间分布。Python作为一种流行的编程语言,有着丰富的地理可视化工具库。其中,Folium是一个基于Leaflet.js的Python库,能够轻松地创建交互式地图。

在本文中,我们将介绍如何使用Folium库在地图上展示数据,为您提供Python地理可视化的入门。

准备工作

首先,您需要安装Folium库。您可以通过pip来安装:

pip install folium

安装完成后,我们就可以开始使用Folium来创建地图了。

创建地图

让我们先创建一个简单的地图,并在其中添加一个标记点。

import folium

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

# 在地图上添加标记点
folium.Marker(location=[40.7128, -74.0060], popup='New York City').add_to(mymap)

# 保存地图为HTML文件
mymap.save('mymap.html')

print("地图已生成,请查看 mymap.html 文件。")

在上面的代码中,我们首先创建了一个地图对象mymap,指定了地图的中心坐标和缩放级别。然后,我们使用folium.Marker在地图上添加了一个标记点,并指定了该标记点的弹出窗口内容。最后,我们将地图保存为HTML文件。

运行以上代码,您会得到一个名为mymap.html的HTML文件,打开它,您将看到一个包含了一个标记点的地图。

在地图上展示数据

除了添加标记点,我们还可以在地图上展示更多的数据,比如热力图。

import folium
from folium.plugins import HeatMap
import pandas as pd

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

# 生成随机数据
data = pd.DataFrame({
   
    'lat': [40.7128, 40.7128, 40.7128, 40.7128, 40.7128],
    'lon': [-74.0060, -74.0060, -74.0060, -74.0060, -74.0060],
    'weight': [1, 2, 3, 4, 5]
})

# 将数据转换为(纬度,经度,权重)的列表
heat_data = [[row['lat'], row['lon'], row['weight']] for index, row in data.iterrows()]

# 创建热力图
HeatMap(heat_data).add_to(mymap)

# 保存地图为HTML文件
mymap.save('heatmap.html')

print("热力图已生成,请查看 heatmap.html 文件。")

在上面的代码中,我们首先创建了一个包含随机数据的DataFrame,数据包括纬度、经度和权重。然后,我们将数据转换为列表形式,以便于创建热力图。最后,我们使用folium.plugins.HeatMap创建了热力图,并将其添加到地图中。

运行以上代码,您将得到一个名为heatmap.html的HTML文件,打开它,您将看到一个包含了热力图的地图。

自定义图层样式

除了展示基本的地图和数据,Folium还允许您自定义图层样式,以便更好地呈现您的数据。

import folium

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

# 添加自定义图层
folium.TileLayer('openstreetmap').add_to(mymap)  # 添加OpenStreetMap图层
folium.TileLayer('cartodbpositron').add_to(mymap)  # 添加CartoDB Positron图层
folium.TileLayer('cartodbdark_matter').add_to(mymap)  # 添加CartoDB Dark Matter图层
folium.LayerControl().add_to(mymap)  # 添加图层控制器

# 保存地图为HTML文件
mymap.save('custom_layers.html')

print("自定义图层地图已生成,请查看 custom_layers.html 文件。")

在上面的代码中,我们创建了一个地图对象mymap,然后使用folium.TileLayer添加了三个不同样式的图层:OpenStreetMap、CartoDB Positron和CartoDB Dark Matter。最后,我们使用folium.LayerControl添加了一个图层控制器,以便用户可以自由切换不同的图层样式。

运行以上代码,您将得到一个名为custom_layers.html的HTML文件,打开它,您将看到一个包含了三个不同样式图层的地图,并且可以通过图层控制器进行切换。

地图上绘制形状

除了添加标记点和展示数据,Folium还支持在地图上绘制各种形状,如多边形、圆形等。

import folium

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

# 添加多边形
folium.Polygon(
    locations=[[40.7128, -74.0060], [40.7128, -73.9360], [40.7528, -73.9360]],
    color='blue',
    fill=True,
    fill_color='skyblue',
    fill_opacity=0.5,
    popup='New York City Polygon'
).add_to(mymap)

# 添加圆形
folium.Circle(
    location=[40.7128, -74.0060],
    radius=1000,
    color='red',
    fill=True,
    fill_color='pink',
    fill_opacity=0.5,
    popup='New York City Circle'
).add_to(mymap)

# 保存地图为HTML文件
mymap.save('shapes.html')

print("地图上形状已绘制,请查看 shapes.html 文件。")

在上面的代码中,我们创建了一个地图对象mymap,然后使用folium.Polygon添加了一个多边形,并使用folium.Circle添加了一个圆形。您可以根据需要调整形状的位置、颜色、填充等参数。最后,我们将地图保存为HTML文件。

运行以上代码,您将得到一个名为shapes.html的HTML文件,打开它,您将看到一个包含了多边形和圆形的地图。

添加图例

在地图中添加图例可以帮助观众更好地理解地图上展示的数据或形状的含义。

import folium

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

# 添加标记点
folium.Marker(location=[40.7128, -74.0060], popup='New York City').add_to(mymap)

# 添加图例
folium.LayerControl().add_to(mymap)

# 保存地图为HTML文件
mymap.save('legend.html')

print("地图上已添加图例,请查看 legend.html 文件。")

在上面的代码中,我们创建了一个地图对象mymap,然后添加了一个标记点,并使用folium.LayerControl添加了一个图例。图例将显示地图上的各种图层,以便用户可以了解每个图层的含义。最后,我们将地图保存为HTML文件。

运行以上代码,您将得到一个名为legend.html的HTML文件,打开它,您将看到一个包含了图例的地图。

在地图上添加文本标签

除了添加标记点和形状,有时候在地图上添加文本标签也是很有用的,可以帮助解释数据或者提供额外的信息。

import folium

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

# 添加文本标签
folium.Marker(location=[40.7128, -74.0060], icon=folium.DivIcon(html='<div style="font-size: 12; color: red;">New York City</div>')).add_to(mymap)

# 保存地图为HTML文件
mymap.save('text_label.html')

print("地图上已添加文本标签,请查看 text_label.html 文件。")

在上面的代码中,我们创建了一个地图对象mymap,然后使用folium.Marker添加了一个标记点,并指定了一个包含文本的HTML标签作为该标记点的图标。这样就在地图上添加了一个文本标签,用于显示“New York City”。最后,我们将地图保存为HTML文件。

运行以上代码,您将得到一个名为text_label.html的HTML文件,打开它,您将看到一个包含了文本标签的地图。

总结

在本文中,我们介绍了如何使用Python中的Folium库进行地理可视化。通过Folium,我们可以轻松地创建交互式地图,并在地图上展示数据、绘制形状、添加图例和文本标签等。以下是本文的主要内容总结:

  1. 创建地图:通过指定地图的中心坐标和缩放级别,可以创建一个基本的地图对象,并在其中添加各种元素。

  2. 展示数据:Folium提供了多种方法来展示数据,包括添加标记点、创建热力图以及绘制各种形状等。这些功能可以帮助我们更直观地理解数据的空间分布。

  3. 自定义图层样式:除了默认的地图样式外,Folium还支持添加自定义的图层样式,如OpenStreetMap、CartoDB Positron和CartoDB Dark Matter等,以满足不同的需求。

  4. 添加图例:图例可以帮助观众更好地理解地图上展示的数据或形状的含义。Folium提供了简单的方法来添加图例,使得地图更具可读性和可理解性。

  5. 在地图上添加文本标签:文本标签是地图可视化中的常用元素之一,可以用于向观众提供额外的信息或解释。Folium允许在地图上添加文本标签,并灵活控制其样式和位置。

通过本文的介绍,读者可以了解到如何利用Folium库进行地理可视化,并创建出具有吸引力和信息量的地图作品。地理可视化是数据科学领域中的重要技能之一,希望本文能够为读者提供一个入门的指南,使他们能够更好地利用Python来进行地理空间数据的分析和展示。

目录
相关文章
|
4天前
|
弹性计算 双11 开发者
阿里云ECS“99套餐”再升级!双11一站式满足全年算力需求
11月1日,阿里云弹性计算ECS双11活动全面开启,在延续火爆的云服务器“99套餐”外,CPU、GPU及容器等算力产品均迎来了全年最低价。同时,阿里云全新推出简捷版控制台ECS Lite及专属宝塔面板,大幅降低企业和开发者使用ECS云服务器门槛。
|
21天前
|
存储 弹性计算 人工智能
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
阿里云弹性计算产品线、存储产品线产品负责人Alex Chen(陈起鲲)及团队内多位专家,和中国电子技术标准化研究院云计算标准负责人陈行、北京望石智慧科技有限公司首席架构师王晓满两位嘉宾,一同带来了题为《通用计算新品发布与行业实践》的专场Session。本次专场内容包括阿里云弹性计算全新发布的产品家族、阿里云第 9 代 ECS 企业级实例、CIPU 2.0技术解读、E-HPC+超算融合、倚天云原生算力解析等内容,并发布了国内首个云超算国家标准。
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
|
3天前
|
人工智能 弹性计算 文字识别
基于阿里云文档智能和RAG快速构建企业"第二大脑"
在数字化转型的背景下,企业面临海量文档管理的挑战。传统的文档管理方式效率低下,难以满足业务需求。阿里云推出的文档智能(Document Mind)与检索增强生成(RAG)技术,通过自动化解析和智能检索,极大地提升了文档管理的效率和信息利用的价值。本文介绍了如何利用阿里云的解决方案,快速构建企业专属的“第二大脑”,助力企业在竞争中占据优势。
|
1天前
|
人工智能 自然语言处理 安全
创新不设限,灵码赋新能:通义灵码新功能深度评测
自从2023年通义灵码发布以来,这款基于阿里云通义大模型的AI编码助手迅速成为开发者心中的“明星产品”。它不仅为个人开发者提供强大支持,还帮助企业团队提升研发效率,推动软件开发行业的创新发展。本文将深入探讨通义灵码最新版本的三大新功能:@workspace、@terminal 和 #team docs,分享这些功能如何在实际工作中提高效率的具体案例。
|
8天前
|
负载均衡 算法 网络安全
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
阿里云平台WoSign品牌SSL证书是由阿里云合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品,用户在阿里云平台https://www.aliyun.com/product/cas 可直接下单购买WoSign SSL证书,快捷部署到阿里云产品中。
1850 6
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
|
10天前
|
Web App开发 算法 安全
什么是阿里云WoSign SSL证书?_沃通SSL技术文档
WoSign品牌SSL证书由阿里云平台SSL证书合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品。
1789 2
|
19天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
26天前
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5388 15
|
13天前
|
人工智能 关系型数据库 Serverless
1024,致开发者们——希望和你一起用技术人独有的方式,庆祝你的主场
阿里云开发者社区推出“1024·云上见”程序员节专题活动,包括云上实操、开发者测评和征文三个分会场,提供14个实操活动、3个解决方案、3 个产品方案的测评及征文比赛,旨在帮助开发者提升技能、分享经验,共筑技术梦想。
1144 152
|
21天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1585 14