首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Folium中的HeatMapWithTime插件

Folium中的HeatMapWithTime插件
EN

Stack Overflow用户
提问于 2020-10-13 06:09:14
回答 1查看 834关注 0票数 0

我能够创建一个HeatMap,但是点没有显示出来:

代码语言:javascript
复制
import folium
import folium.plugins as plugins
import numpy as np
import pandas as pd
import geopandas as gpd
from folium import Choropleth, Circle, Marker
from folium.plugins import HeatMap, MarkerCluster, HeatMapWithTime
ucdp_df = pd.read_csv('csv/ged201.csv') # from https://ucdp.uu.se/downloads/index.html#ged_global
ucdp = gpd.GeoDataFrame(ucdp_df, geometry=gpd.points_from_xy(ucdp_df.longitude, ucdp_df.latitude))
ucdp.crs = {'init': 'epsg:4326'}
m = folium.Map([35, 41], tiles='stamentoner', zoom_start=6)
hm = HeatMapWithTime(data=ucdp[['latitude', 'longitude']].values.tolist(),
                     index=ucdp['year'].values.tolist(), 
                     radius=10,
                     auto_play=True,
                     max_opacity=0.3)
hm.add_to(m)
m
EN

回答 1

Stack Overflow用户

发布于 2020-10-16 23:23:22

您需要以正确的格式提供数据。这应该是可行的:

代码语言:javascript
复制
from collections import defaultdict, OrderedDict

data = defaultdict(list)
for r in ucdp_df.itertuples():
    data[r.year].append([r.latitude, r.longitude])
    
data = OrderedDict(sorted(data.items(), key=lambda t: t[0]))

然后使用数据:

代码语言:javascript
复制
m = folium.Map([35, 41],
               tiles='stamentoner',
               zoom_start=6)


hm = HeatMapWithTime(data=list(data.values()),
                     index=list(data.keys()), 
                     radius=10,
                     auto_play=True,
                     max_opacity=0.3)
hm.add_to(m)
m

然后你会得到:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64325958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档