You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HeatMapWithTime时地图无法显示热签名问题求助

问题排查与修复方案

核心问题

你的代码存在两个关键问题导致热签名不显示:

  • 数据格式不匹配:HeatMapWithTime要求传入按时间分组的坐标集合,每个时间点对应一组[纬度, 经度, 权重]格式的数据;你当前直接传入所有坐标的扁平列表,插件无法识别时间与坐标的对应关系。
  • 缺少热度权重:热图的渲染依赖权重值(如温度、观测频次等),未提供权重时,部分场景下插件不会生成热签名。

修复步骤

1. 按日期分组并构造正确的数据格式

假设你使用表格中的temperature字段作为热图权重,修改代码如下:

import folium
from folium import plugins
import pandas as pd

ASOS_DATA = r"C:\Users\ASOS_Cali_Weather_Stations.csv"
df = pd.read_csv(ASOS_DATA)

# 统一日期格式为字符串,避免格式冲突
df['test_date'] = pd.to_datetime(df['test_date']).dt.strftime('%Y-%m-%d')

# 按日期分组,生成每个时间点对应的坐标+权重列表
heat_data = []
# 获取去重并排序的日期列表
dates = sorted(df['test_date'].unique())

for date in dates:
    # 提取当前日期的所有数据
    daily_data = df[df['test_date'] == date]
    # 构造 [纬度, 经度, 权重] 格式的列表
    daily_coords = [[row['lat'], row['lon'], row['temperature']] for _, row in daily_data.iterrows()]
    heat_data.append(daily_coords)

# 创建地图实例
map_heatmap_time = folium.Map([37, -122], tiles='CartoDB Dark_Matter', zoom_start=6)

# 初始化时间热图插件,传入分组后的数据和日期索引
heatmap_time_plugin = plugins.HeatMapWithTime(heat_data, index=dates)

heatmap_time_plugin.add_to(map_heatmap_time)
map_heatmap_time

2. 验证数据完整性

  • 检查test_date列是否存在格式错误或空值,确保每个日期都有对应的坐标数据。
  • 确认权重字段(如temperature)无空值,可通过df['temperature'].fillna(0, inplace=True)填充缺失值。

3. 优化热图显示效果(可选)

如果热签名仍不明显,可调整插件参数增强可视化效果:

heatmap_time_plugin = plugins.HeatMapWithTime(
    heat_data,
    index=dates,
    radius=15,    # 增大热图点的半径
    blur=10,      # 调整模糊程度
    max_opacity=0.8  # 设置最大透明度
)

内容的提问来源于stack exchange,提问作者Geno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 03:10:29