新冠病毒19的叶面热图和时间

2024-04-29 09:48:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图为确诊的新冠病毒19型病例制作一部热图电影

我的数据集是一个pd.dataFrame,包含列DateLatitudeLongitudeConfirmed

我的问题是,我不知道如何在Folium.plugin.HeatmapWithTime中输入确认值

我尝试使用:

new_map = folium.Map(location=[0, 0], tiles= "cartodbpositron",min_zoom=2, zoom_start=2, max_zoom=3)

df['Lat'] = df['Lat'].astype(float)
df['Long'] = df['Long'].astype(float)

Confirmed_df = df[['Lat', 'Long','Confirmed']]

hm = plugins.HeatMapWithTime(Confirmed_df,auto_play=True,max_opacity=0.8)
hm.add_to(new_map)

new_map

df看起来像:

Date                     LAT           LONG    Confirmed 
2020/04/26             48.847306     2.433284   6500
2020/04/26             48.861935     2.441292   4800      
2020/04/26             48.839644     2.655109   9000   
2020/04/25             48.924351     2.386369   12000      
2020/04/25             48.829872     2.376677   0  

Tags: mapdfnewdatefloatmaxlong病毒
1条回答
网友
1楼 · 发布于 2024-04-29 09:48:43

在输入HeatMapWithTime()函数之前,您应该预处理数据。这里的documentexample叶很有用

在您的情况下,输入应该是[lat、lng、重量]列表,您应该使用确认列作为重量。首先,需要将“确认”值规格化为(0,1)

df['Confirmed'] = df['Confirmed'] / df['Confirmed'].sum()

然后,您可以像这样进行预处理:

df['Date'] = df['Date'].sort_values(ascending=True)
data = []
for _, d in df.groupby('Date'):
   data.append([[row['lat'], row['lng'], row['Confirmed']] for _, row in d.iterrows()])

最后,使用数据输入函数HeatMapWithTime(),如下所示:

hm = plugins.HeatMapWithTime(data, auto_play=True,max_opacity=0.8)
hm.add_to(new_map)
new_map

相关问题 更多 >