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来进行地理空间数据的分析和展示。

相关文章
|
前端开发 JavaScript 定位技术
folium底图本地化处理
folium底图本地化处理
597 0
|
SQL 存储 数据可视化
Ganos H3地理网格能力解析与最佳实践
本文介绍了Ganos H3的相关功能,帮助读者快速了解Ganos地理网格的重要特性与应用实践。H3是Uber研发的一种覆盖全球表面的二维地理网格,采用了一种全球统一的、多层次的六边形网格体系来表示地球表面,这种地理网格技术在诸多业务场景中得到广泛应用。Ganos不仅提供了H3网格的全套功能,还支持与其它Ganos时空数据类型进行跨模联合分析,极大程度提升了客户对于时空数据的挖掘分析能力。
|
SQL 自然语言处理 数据挖掘
大模型与数据分析:探索Text-to-SQL(上)
大模型与数据分析:探索Text-to-SQL(上)
5877 0
|
机器学习/深度学习 算法 索引
LSTM(长短期记忆网络)原理介绍
LSTM算法是一种重要的目前使用最多的时间序列算法,是一种特殊的RNN(Recurrent Neural Network,循环神经网络),能够学习长期的依赖关系。主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
7611 0
LSTM(长短期记忆网络)原理介绍
|
7月前
|
数据可视化 前端开发 数据挖掘
使用Folium在Python中进行地图可视化:全面指南
Folium是基于Python的交互式地图可视化库,依托Leaflet.js实现地理空间数据展示。本文从安装、基础使用到高级功能全面解析Folium:包括创建地图、添加标记、保存文件,以及绘制热力图、多边形和Choropleth地图等高级操作。通过展示北京市景点与全球地震数据的实际案例,结合性能优化、自定义样式和交互性增强技巧,帮助用户掌握Folium的核心功能与应用潜力,为数据分析提供直观支持。
499 2
|
11月前
|
人工智能 C++ iOS开发
ollama + qwen2.5-coder + VS Code + Continue 实现本地AI 辅助写代码
本文介绍在Apple M4 MacOS环境下搭建Ollama和qwen2.5-coder模型的过程。首先通过官网或Brew安装Ollama,然后下载qwen2.5-coder模型,可通过终端命令`ollama run qwen2.5-coder`启动模型进行测试。最后,在VS Code中安装Continue插件,并配置qwen2.5-coder模型用于代码开发辅助。
18370 7
|
XML 存储 API
RAG效果优化:高质量文档解析详解
本文介绍了如何通过高质量的文档解析提升RAG系统整体的效果。
16129 15
|
11月前
|
缓存 Shell iOS开发
修改 torch和huggingface 缓存路径
简介:本文介绍了如何修改 PyTorch 和 Huggingface Transformers 的缓存路径。通过设置环境变量 `TORCH_HOME` 和 `HF_HOME` 或 `TRANSFORMERS_CACHE`,可以在 Windows、Linux 和 MacOS 上指定自定义缓存目录。具体步骤包括设置环境变量、编辑 shell 配置文件、移动现有缓存文件以及创建符号链接(可选)。
3068 2
|
边缘计算 物联网 5G
软件定义网络(SDN)的未来趋势:重塑网络架构,引领技术创新
【8月更文挑战第20天】软件定义网络(SDN)作为新兴的网络技术,正在逐步重塑网络架构,引领技术创新。随着5G、人工智能、边缘计算等技术的不断发展,SDN将展现出更加广阔的应用前景和市场潜力。未来,SDN有望成为主流网络技术,并在各行各业推动数字化转型。让我们共同期待SDN技术带来的更加智能、安全和高效的网络体验。