首页 > 解决方案 > 使用 TimestampedGeoJson 和 Folium 绘制数据框不显示点

问题描述

这是我的数据的样子:

在此处输入图像描述

我正在尝试使用数据滑块绘制相对于每年的位置。

我的代码:

from pathlib import Path
import pandas as pd
import numpy as np
import seaborn as sns
import folium
from folium.plugins import TimestampedGeoJson


def create_geojson_features(df):
    print('Creating GeoJSON features...')
    features = []
    for year in df['Year'].unique():
      df_segmented =  df[(df['Year']== year)]

      feature = {
          'type': 'Feature',
          'geometry': {
              'type':'Point', 
              'coordinates': list(map(list,zip(df_segmented.Latitude.astype(float) , df_segmented.Longitude.astype(float))))
          }
          ,'properties': {
              'times': df_segmented['Year'].astype(float).iloc[0],
              'style': {'color': "Blue"},
              'icon': 'circle',
              'iconstyle':{
                  'fillColor': 'Blue',
                  'fillOpacity': 0.8,
                  'stroke': 'true',
                  'radius': df_segmented['value'].mul(10).astype(float).to_list(),
              }
              ,'popup' : df_segmented['Name'].to_list(),
          }
      }
      features.append(feature)
    return features

def make_map(features):
    print('Making map...')
    pollution_map = folium.Map(location=(32, 67), tiles="OpenStreetMap", zoom_start=4)

    TimestampedGeoJson(
        {'type': 'FeatureCollection',
        'features': features}
        , period='P1M'
        , add_last_point=True
        , transition_time=200
        , auto_play=True
        , max_speed=1
        , loop=True
        , loop_button=True
        , time_slider_drag_update=True,
    ).add_to(pollution_map)
    print(' Done.')
    return pollution_map

def plot_pollutant():
    df = pd.read_csv("Energy.csv", parse_dates=True)
    df.dropna(inplace=True)
    features = create_geojson_features(df)
    result = make_map(features)
    return result
    
r = plot_pollutant()

当我尝试查看生成的地图时,它不显示任何数据点,滑块也不显示。注意:我已将“年份”转换为浮点数,因为它给出了类型错误。

有人可以指出我在这里做错了什么吗?每年的字典都存储在一个名为 features 的列表中,该列表被传递给绘图函数。

标签: pythonpandasdataframedata-visualizationfolium

解决方案


推荐阅读