求助:Folium HeatMapWithTime生成的HTML文件显示空白
HeatMapWithTime生成空白HTML的解决办法
你的代码核心问题是传给HeatMapWithTime的data格式不符合要求,同时底图缩放级别太小,导致看不到模拟的小范围点位。以下是修正方案:
关键问题说明
HeatMapWithTime要求的数据结构是按时间节点分组的坐标列表:每个元素对应某一时刻的所有点位,格式为[[[lat1,lng1], [lat2,lng2]], [[lat3,lng3], ...]],而不是把每条数据的纬度、经度、时间放在同一个子列表里。
修正后的代码
import folium import pandas as pd import numpy as np from folium.plugins import HeatMapWithTime # 生成模拟数据 latitudes = np.random.uniform(low=45.523, high=45.524, size=50) longitudes = np.random.uniform(low=-122.675, high=-122.676, size=50) times = np.sort(np.random.uniform(low=1580000000, high=1600000000, size=50)) data = {'latitude': latitudes, 'longitude': longitudes, 'time': times} df = pd.DataFrame(data) df['time'] = pd.to_datetime(df['time'], unit='s') # 1. 按时间分组,整理成HeatMapWithTime需要的格式 df['time_str'] = df['time'].dt.strftime("%Y-%m-%d %H:%M:%S") heat_data = [] for _, group in df.groupby('time_str'): heat_data.append(group[['latitude', 'longitude']].values.tolist()) time_index = df['time_str'].unique().tolist() # 2. 调大底图缩放级别,适配小范围模拟数据 m = folium.Map(location=[45.523, -122.675], zoom_start=18) # 添加时间轴热力图 HeatMapWithTime( data=heat_data, index=time_index, auto_play=True, max_opacity=0.8 ).add_to(m) # 保存HTML m.save("heatmap_with_timeline.html")
额外检查建议
- 打开HTML时按F12调出开发者工具,查看Console面板的报错信息,能快速定位渲染问题
- 避免用
map作为变量名,它是Python内置函数,虽不报错但不符合编码规范
内容的提问来源于stack exchange,提问作者maregor
相关产品推荐
相关产品推荐

