【问题标题】:HeatMapWithTime Plugin in FoliumFolium 中的 HeatMapWithTime 插件
【发布时间】:2020-10-12 22:09:13
【问题描述】:

我能够创建一个热图,但没有显示点:

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

【问题讨论】:

    标签: python python-3.x heatmap geopandas folium


    【解决方案1】:

    您需要以正确的格式提供数据。这应该有效:

    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]))
    

    然后使用数据:

    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
    

    你会得到:

    【讨论】:

    猜你喜欢
    • 2020-07-31
    • 2023-01-18
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2020-07-17
    • 1970-01-01
    相关资源
    最近更新 更多