Folium:Python地图可视化库使用详解

<丫
Folium是一个基于Python的库,用于将地理数据转换为交互式地图。它使用Leaflet.js前端库来生成地图,并且可以轻松集成到Web应用程序中。Folium特别适合于数据科学和地理信息系统(GIS)领域的可视化。

Folium的主要特点

  • 交互性:生成的地图支持缩放、拖拽等交互操作。
  • 多种地图样式:支持多种地图底图样式,包括OpenStreetMap、Stamen Terrain、Mapbox等。
  • 丰富的图层:可以添加标记、线条、多边形、热力图等多种图层。
  • 数据可视化:支持从GeoJSON和TopoJSON数据生成地图。

常用Folium函数及其参数

folium.Map()

创建一个地图对象。

  • location: 地图中心的经纬度坐标。
  • zoom_start: 初始缩放级别。
  • tiles: 地图底图的URL或内置样式名称。

folium.Marker()

在地图上添加一个标记。

  • location: 标记的经纬度坐标。
  • popup: 点击标记时显示的弹出窗口内容。
  • tooltip: 鼠标悬停时显示的提示信息。
  • icon: 自定义标记图标。

folium.Circle()

在地图上绘制一个圆形区域。

  • location: 圆心的经纬度坐标。
  • radius: 圆的半径,单位为米。
  • color: 圆的边框颜色。

folium.PolyLine()

在地图上绘制一条折线。

  • locations: 折线各点的经纬度坐标列表。
  • color: 线条颜色。
  • weight: 线条宽度。

folium.Polygon()

在地图上绘制一个多边形。

  • locations: 多边形各点的经纬度坐标列表。
  • fill: 是否填充多边形内部。
  • color: 线条颜色。
  • fill_color: 填充颜色。

folium.LayerControl()

添加图层控制到地图。

  • collapsed: 是否默认折叠图层控制。

folium.MarkerCluster()

将多个标记聚合为一个图层。

  • markers: 要聚合的标记列表。

示例

以下是一个使用Folium绘制地图并添加标记的示例:

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

# 模拟一些数据
data = {
    'Name': ['Place A', 'Place B', 'Place C', 'Place D'],
    'Latitude': [39.9, 39.8, 40.0, 40.1],
    'Longitude': [116.4, 116.5, 116.6, 116.7],
    'Description': ['Description A', 'Description B', 'Description C', 'Description D']
}
df = pd.DataFrame(data)

# 创建地图对象,中心坐标为北京
m = folium.Map(location=[39.9, 116.4], zoom_start=12, tiles='Stamen Terrain')

# 添加标记
marker_cluster = MarkerCluster().add_to(m)
for index, row in df.iterrows():
    folium.Marker(
        location=[row['Latitude'], row['Longitude']],
        popup=f"{row['Name']}<br/>{row['Description']}",
        icon=folium.Icon(color='red', icon='info-sign')
    ).add_to(marker_cluster)

# 添加多边形
folium.Polygon(
    locations=[
        [39.9, 116.4],
        [39.95, 116.45],
        [40.0, 116.4],
        [39.9, 116.4]
    ],
    color='blue',
    fill=True,
    fill_color='#AAF',
    fill_opacity=0.5
).add_to(m)

# 添加热力图
from folium.plugins import HeatMap
heat_data = [[39.9, 116.4, 0.5], [39.95, 116.45, 0.7], [40.0, 116.4, 0.6]]
HeatMap(heat_data).add_to(m)

# 添加图片覆盖层
from folium.raster_layers import ImageOverlay
image_path = 'path_to_your_image.jpg'
ImageOverlay(image_path, bounds=[[39.88, 116.38], [40.03, 116.58]]).add_to(m)

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

示例解释

  • 数据准备:我们使用Pandas创建了一个包含地点名称、经纬度和描述的DataFrame。
  • 创建地图:使用folium.Map创建了一个地图对象,中心设置在北京,初始缩放级别为12。
  • 添加标记:遍历DataFrame中的每一行,为每个地点创建一个标记,并添加到地图上。使用MarkerCluster插件将所有标记聚合在一起。
  • 添加多边形:使用folium.Polygon在地图上绘制一个多边形。
  • 添加热力图:使用folium.plugins.HeatMap插件添加一个热力图层。
  • 添加图片覆盖层:使用folium.raster_layers.ImageOverlay在地图上添加一个图片覆盖层。
  • 保存地图:将地图保存为一个HTML文件,可以在浏览器中打开并进行交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值