首页 > Python资料 博客日记
Python Folium库:地理数据可视化
2024-09-07 15:00:07Python资料围观89次
更多Python学习内容:ipengtao.com
Folium是一个基于Python的地理数据可视化库,它通过简洁的接口将Python的数据操作能力与Leaflet.js的地图呈现能力结合在一起。Folium使得创建交互式地图变得非常简单,广泛应用于数据分析、地理信息系统(GIS)和Web应用程序。本文将详细介绍Folium库的安装、主要功能、基本操作、高级功能及其实践应用,并提供丰富的示例代码。
安装
Folium可以通过pip进行安装。确保Python环境已激活,然后在终端或命令提示符中运行以下命令:
pip install folium
主要功能
地图创建:支持多种地图图层和底图。
标记和弹出信息:支持在地图上添加标记和弹出信息。
绘制形状:支持绘制多边形、折线和圆形等几何图形。
热力图和聚合图:支持创建热力图和点聚合图。
数据集成:支持与Pandas和GeoPandas数据框无缝集成。
基本操作
创建基础地图
以下示例展示了如何使用Folium创建一个基础地图:
import folium
# 创建一个地图对象
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 保存地图到HTML文件
m.save('basic_map.html')
添加标记和弹出信息
以下示例展示了如何在地图上添加标记和弹出信息:
import folium
# 创建一个地图对象
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 添加标记
folium.Marker(
location=[45.5236, -122.6750],
popup='Portland, OR',
icon=folium.Icon(icon='cloud')
).add_to(m)
# 保存地图到HTML文件
m.save('map_with_marker.html')
添加多边形
以下示例展示了如何在地图上添加多边形:
import folium
# 创建一个地图对象
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 添加多边形
folium.Polygon(
locations=[
[45.5236, -122.6750],
[45.5289, -122.6829],
[45.5289, -122.6674]
],
color='blue',
fill=True,
fill_color='blue'
).add_to(m)
# 保存地图到HTML文件
m.save('map_with_polygon.html')
添加折线
以下示例展示了如何在地图上添加折线:
import folium
# 创建一个地图对象
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 添加折线
folium.PolyLine(
locations=[
[45.5236, -122.6750],
[45.5289, -122.6829],
[45.5289, -122.6674]
],
color='red'
).add_to(m)
# 保存地图到HTML文件
m.save('map_with_polyline.html')
高级功能
创建热力图
以下示例展示了如何使用Folium创建热力图:
import folium
from folium.plugins import HeatMap
# 创建一个地图对象
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 示例数据
data = [
[45.5236, -122.6750, 1],
[45.5289, -122.6829, 1],
[45.5289, -122.6674, 1]
]
# 添加热力图
HeatMap(data).add_to(m)
# 保存地图到HTML文件
m.save('map_with_heatmap.html')
创建点聚合图
以下示例展示了如何使用Folium创建点聚合图:
import folium
from folium.plugins import MarkerCluster
# 创建一个地图对象
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 创建一个点聚合图层
marker_cluster = MarkerCluster().add_to(m)
# 添加标记到点聚合图层
for lat, lon in zip([45.5236, 45.5289, 45.5289], [-122.6750, -122.6829, -122.6674]):
folium.Marker(location=[lat, lon]).add_to(marker_cluster)
# 保存地图到HTML文件
m.save('map_with_markercluster.html')
与Pandas集成
以下示例展示了如何将Pandas数据集成到Folium中:
import folium
import pandas as pd
# 创建一个地图对象
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 示例数据
data = pd.DataFrame({
'lat': [45.5236, 45.5289, 45.5289],
'lon': [-122.6750, -122.6829, -122.6674],
'name': ['Location 1', 'Location 2', 'Location 3']
})
# 添加标记
for i, row in data.iterrows():
folium.Marker(
location=[row['lat'], row['lon']],
popup=row['name']
).add_to(m)
# 保存地图到HTML文件
m.save('map_with_pandas.html')
绘制GeoJSON数据
以下示例展示了如何在Folium中绘制GeoJSON数据:
import folium
# 创建一个地图对象
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 示例GeoJSON数据
geojson_data = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-122.6750, 45.5236]
},
"properties": {
"name": "Portland"
}
}
]
}
# 添加GeoJSON图层
folium.GeoJson(geojson_data).add_to(m)
# 保存地图到HTML文件
m.save('map_with_geojson.html')
实践应用
可视化地理数据集
以下示例展示了如何使用Folium可视化一个地理数据集,例如城市人口数据:
import folium
import pandas as pd
# 示例数据
data = pd.DataFrame({
'city': ['Portland', 'San Francisco', 'Los Angeles'],
'lat': [45.5236, 37.7749, 34.0522],
'lon': [-122.6750, -122.4194, -118.2437],
'population': [652503, 884363, 3999759]
})
# 创建一个地图对象
m = folium.Map(location=[37.7749, -122.4194], zoom_start=5)
# 添加标记和弹出信息
for i, row in data.iterrows():
folium.Marker(
location=[row['lat'], row['lon']],
popup=f"{row['city']}: {row['population']} people"
).add_to(m)
# 保存地图到HTML文件
m.save('map_with_population.html')
结合GeoPandas进行空间分析
以下示例展示了如何结合GeoPandas和Folium进行空间分析和可视化:
import geopandas as gpd
import folium
# 加载示例GeoDataFrame
gdf = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
# 过滤出美国
usa = gdf[gdf['name'] == 'United States']
# 创建一个地图对象
m = folium.Map(location=[37.7749, -95.4194], zoom_start=4)
# 添加GeoDataFrame图层
folium.GeoJson(usa).add_to(m)
# 保存地图到HTML文件
m.save('map_with_geopandas.html')
创建可交互的旅行路线图
以下示例展示了如何使用Folium创建一个可交互的旅行路线图:
import folium
# 创建一个地图对象
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
# 添加旅行路线
folium.PolyLine(
locations=[
[45.5236, -122.6750],
[45.5289, -122.6829],
[45.5289, -122.6674]
],
color='blue'
).add_to(m)
# 添加标记
folium.Marker(
location=[45.5236, -122.6750],
popup='Start Point'
).add_to(m)
folium.Marker(
location=[45.5289, -122.6829],
popup='Middle Point'
).add_to(m)
folium.Marker(
location=[45.5289, -122.6674],
popup='End Point'
).add_to(m)
# 保存地图到HTML文件
m.save('map_with_travel_route.html')
可视化实时数据
以下示例展示了如何使用Folium可视化实时数据,例如城市温度数据:
import folium
import requests
# 获取实时温度数据(这里使用一个虚拟API示例)
response = requests.get('https://api.example.com/cities/temperature')
data = response.json()
# 创建一个地图对象
m = folium.Map(location=[37.7749, -122.4194], zoom_start=5)
# 添加标记和弹出信息
for city in data:
folium.Marker(
location=[city['lat'], city['lon']],
popup=f"{city['name']}: {city['temperature']}°C"
).add_to(m)
# 保存地图到HTML文件
m.save('map_with_temperature.html')
总结
Folium库为Python开发者提供了一个强大且灵活的地理数据可视化工具。通过其简洁的API和丰富的功能,用户可以轻松创建交互式地图,并在地图上添加标记、绘制形状、创建热力图和点聚合图等。无论是在地理数据分析、Web地图应用开发还是实时数据可视化方面,Folium都能提供强大的支持和便利。本文详细介绍了Folium库的安装、主要功能、基本操作、高级功能及其实践应用,并提供了丰富的示例代码。希望在实际项目中能够充分利用Folium库,提高地理数据可视化的效率和效果。
如果你觉得文章还不错,请大家 点赞、分享、留言 ,因为这将是我持续输出更多优质文章的最强动力!
更多Python学习内容:ipengtao.com
如果想要系统学习Python、Python问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。
我们还为大家准备了Python资料和副业项目合集,感兴趣的小伙伴快来找我领取一起交流学习哦!
往期推荐
Python 中的 isinstance() 函数:类型检查的利器
点击下方“阅读原文”查看更多
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj