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']}
{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文件,可以在浏览器中打开并进行交互。

你可能感兴趣的:(python,python,开发语言)