folium,一个很酷的 python 库!

科技   2024-09-20 18:20   贵州  

在数据可视化的领域,地图可视化是一个重要的组成部分。

随着地理信息系统(GIS)技术的发展,越来越多的开发者和数据科学家开始使用Python进行地图可视化。

Folium是一个基于Python的库,它使得在Jupyter Notebook中创建交互式地图变得简单而直观。

短视频去水印工具:爱图工具箱

本文将深入分析Folium模块的应用,并通过实战案例展示如何使用Folium进行地图可视化。

Folium简介

Folium是一个用于创建交互式地图的Python库,基于Leaflet.js。

它允许用户将数据可视化为地图,并支持多种地图图层、标记、弹出窗口等功能。

Folium的优点在于其简单易用的API和强大的功能,适合数据分析师和开发者使用。

Folium的安装

在开始之前,我们需要安装Folium库。可以通过pip命令进行安装:

pip install folium

创建基本地图

Folium的核心功能是创建地图。

我们可以通过以下代码创建一个基本的地图:

import folium

# 创建一个地图对象
m = folium.Map(location=[39.932.9], zoom_start=5)

# 保存地图为HTML文件
m.save("basic_map.html")

在上面的代码中,我们创建了一个以土耳其为中心的地图,并设置了初始缩放级别为5。

地图将保存为HTML文件,可以在浏览器中打开查看。

添加标记

在地图上添加标记是Folium的一个重要功能。

我们可以使用Marker类来添加标记,并可以为标记添加弹出窗口。

# 添加标记
folium.Marker(
    location=[39.932.9],
    popup='土耳其首都安卡拉',
    icon=folium.Icon(color='blue')
).add_to(m)

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

在这个例子中,我们在安卡拉的位置添加了一个标记,并设置了一个弹出窗口,显示“土耳其首都安卡拉”。

添加圆形和多边形

Folium还支持添加圆形和多边形,这对于表示区域或特定范围非常有用。

# 添加圆形
folium.Circle(
    location=[39.9,32.9],
    radius=50000,
    color='green',
    fill=True,
    fill_color='green'
).add_to(m)

# 添加多边形
folium.Polygon(
    locations=[[39.9,32.9],[40.0,33.0],[39.8,33.0]],
    color='red',
    fill=True,
    fill_color='red'
).add_to(m)

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

在这个例子中,我们在安卡拉的位置添加了一个半径为50公里的绿色圆形和一个红色多边形。

接下来,我们将通过一个实战案例来展示Folium的强大功能。

假设我们有一个城市数据集,包含城市名称、经纬度和人口信息。

我们将使用Folium将这些城市可视化在地图上,并根据人口信息调整标记的大小和颜色。

数据准备

首先,我们需要准备一个城市数据集。我们可以使用Pandas库来处理数据。

import pandas as pd

# 创建城市数据集
data ={
'城市':['安卡拉','伊斯坦布尔','伊兹密尔','布尔萨','阿达纳'],
'纬度':[39.9334,41.0082,38.4192,40.1826,37.0],
'经度':[32.8597,28.9784,27.1287,29.0665,35.3213],
'人口':[5500000,15029231,4320519,3056120,2230000]
}

cities = pd.DataFrame(data)

创建地图并添加城市标记

接下来,我们将创建一个地图,并根据城市的人口信息添加标记。

# 创建地图对象
m = folium.Map(location=[39.9,32.9], zoom_start=6)

# 添加城市标记
for index, row in cities.iterrows():
    folium.CircleMarker(
        location=(row['纬度'], row['经度']),
        radius=row['人口']/1000000,# 根据人口调整半径
        color='blue',
        fill=True,
        fill_color='blue',
        popup=row['城市']
).add_to(m)

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

在这个例子中,我们使用CircleMarker根据城市的人口信息调整标记的大小。人口越多,标记的半径越大。

打开生成的city_population_map.html文件,我们可以看到一个交互式地图,标记了不同城市的位置,点击标记可以查看城市名称。

标记的大小直观地反映了城市的人口信息。

添加图层控制

Folium支持图层控制,可以让用户选择不同的地图图层。

我们可以使用LayerControl类来实现这一功能。

# 创建地图对象
m = folium.Map(location=[39.9,32.9], zoom_start=6)

# 添加城市标记
for index, row in cities.iterrows():
    folium.CircleMarker(
        location=(row['纬度'], row['经度']),
        radius=row['人口']/1000000,
        color='blue',
        fill=True,
        fill_color='blue',
        popup=row['城市'],
        name='城市标记'
).add_to(m)

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

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

在这个例子中,我们添加了图层控制,用户可以选择显示或隐藏城市标记。

使用GeoJSON数据

Folium还支持GeoJSON格式的数据,可以用于绘制复杂的地理形状。

我们可以使用GeoPandas库来读取GeoJSON文件。

import geopandas as gpd

# 读取GeoJSON文件
geo_data = gpd.read_file('path_to_geojson_file.geojson')

# 创建地图对象
m = folium.Map(location=[39.932.9], zoom_start=6)

# 添加GeoJSON图层
folium.GeoJson(geo_data).add_to(m)

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

在这个例子中,我们读取了一个GeoJSON文件,并将其添加到地图中。

总结

Folium是一个强大的Python库,适用于地图可视化。通过简单的API,用户可以创建交互式地图,添加标记、形状和图层控制等功能。

本文通过实战案例展示了Folium的基本用法和高级功能,帮助读者理解如何使用Folium进行数据可视化。

随着数据可视化需求的增加,Folium将继续在地理信息可视化领域发挥重要作用。

希望本文能为读者提供一些启发,帮助他们在实际项目中更好地使用Folium。

推荐阅读

Python集中营
Python 领域知识分享!
 最新文章