【问题标题】:Having an issue seeing the heat signature on the map using HeatMapWithTime使用 HeatMapWithTime 在地图上查看热特征时出现问题
【发布时间】:2022-11-11 08:04:17
【问题描述】:
运行以下脚本时,我无法在地图上看到我的数据。我可以看到地图,时间滑块出现在底部并滚动浏览我提供的日期,但是,我在任何位置都没有看到热信号。有什么我要离开的吗?
这是我正在使用的表:
# HEATMAP OVER TIME WITH MY DATA
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)
latlon = (df[["lon", "lat"]]).values.tolist()
date = (df["test_date"]).values.tolist()
# MAP
map_heatmap_time = folium.Map([37, -122], tiles='CartoDB Dark_Matter', zoom_start = 6)
# HEATMAP PLUGIN
heatmap_time_plugin = plugins.HeatMapWithTime(latlon, index= date)
# ADD HEATMAP PLUGIN TO MAP
heatmap_time_plugin.add_to(map_heatmap_time)
# DISPLAY THE MAP
map_heatmap_time
【问题讨论】:
标签:
python
time
heatmap
folium
cartodb
【解决方案1】:
由于没有提供数据,我使用示例数据创建了一个图表。时间段为 30 天,以日期为单位有 30 个经纬度位置。那是热图的数据,它是一个多重列表。我现在在日期滑块中有 30 个纬度/经度和热图值可供一天使用。设置创建的数据和日期列表,您就完成了。
import folium
import folium.plugins as plugins
import pandas as pd
import numpy as np
import random
# sample data
df = pd.DataFrame({'test_date': np.repeat(pd.date_range('2022-09-01', periods=30), 30),
'lon': [random.uniform(36.5, 37.5) for _ in range(900)],
'lat':[random.uniform(-121.5, -122.5) for _ in range(900)],
'value': np.random.rand(900)})
df['test_date'] = pd.to_datetime(df['test_date'])
# heatmap data by date
latlon = []
for d in df['test_date'].unique():
dff = df.query('test_date == @d')
latlon.append(dff[['lon','lat','value']].values.tolist())
# convert date to str(date)
date = [k.strftime("%Y-%m-%d") for k in pd.date_range('2022-09-01', periods=30)]
map_heatmap_time = folium.Map([37, -122], tiles='OpenStreetMap', zoom_start=8)
heatmap_time_plugin = plugins.HeatMapWithTime(latlon, index=date)
heatmap_time_plugin.add_to(map_heatmap_time)
map_heatmap_time